您的位置:首页 > 其它

USACO Section 1.2.1 Milking Cows

2013-07-23 09:34 363 查看
首先还是排序,比较重要先按开始时间排,如果相同,再按结束时间排序

用两个变量分别记录最长的连续时间的起始时间,满足条件就更新这两个值

/*
ID: zhuihun1
PROG: milk2
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include<algorithm>
using namespace std;
struct Farmer
{
int s_time;
int e_time;
};
bool comp(Farmer a,Farmer b)
{
return a.s_time<b.s_time||(a.s_time==b.s_time&&a.e_time<b.e_time);
}
Farmer a[5005];int n;
int max(int g,int h)
{
return g>h?g:h;
}
int main()
{
ofstream fout ("milk2.out");
ifstream fin ("milk2.in");
int i;
int max_t=0,min_t=0;
fin>>n;
for(i=0;i<n;i++)
fin>>a[i].s_time>>a[i].e_time;
sort(a,a+n,comp);
int nBegin=a[0].s_time, nEnd=a[0].e_time;
max_t=a[0].e_time-a[0].s_time;

for(i=0;i<n;i++)
{
if(a[i].s_time<=nEnd && a[i].e_time>=nEnd){
nEnd = a[i].e_time;
}
else if(a[i].s_time>nEnd)
{
max_t = max(nEnd-nBegin, max_t);
min_t = max(a[i].s_time-nEnd, min_t);
nBegin = a[i].s_time;
nEnd = a[i].e_time;
}
}
fout<<max_t<<" "<<min_t<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: