USACO Section 1.2 Milking Cows

来源:互联网 发布:网络电视直播电脑版 编辑:程序博客网 时间:2024/05/29 17:10
/*ID: lucien23PROG: milk2LANG: C++*/#include<iostream>#include<fstream>#include<algorithm>using namespace std;typedef struct Milking{int start;int end;Milking(){}Milking(int startTime,int endTime){start=startTime;end=endTime;}}Milking;bool comparer(Milking milking1,Milking milking2){return milking1.start <= milking2.start;}int main(){ifstream infile("milk2.in");ofstream outfile("milk2.out");if(!infile || !outfile){cout<<"file operation failure!"<<endl;return -1;}int N;infile>>N;Milking *milkings=new Milking[N];int startTime,endTime;for (int i=0;i<N;i++){infile>>startTime>>endTime;milkings[i]=Milking(startTime,endTime);}//对区间进行排序sort(milkings,milkings+N,comparer);//求最大连续区间int maxMilking=0,durMilking=0;int startMilking=milkings[0].start;int endMilking=milkings[0].end;maxMilking=endMilking-startMilking;for (int i=1;i<N;i++){Milking currentMilking=milkings[i];if(endMilking>=currentMilking.start && endMilking<currentMilking.end){endMilking=currentMilking.end;}else if(endMilking<currentMilking.start){durMilking=endMilking-startMilking;if(durMilking>maxMilking)maxMilking=durMilking;startMilking=currentMilking.start;endMilking=currentMilking.end;}}//求最大连续空闲区间int maxIdle=0,durIdle=0;int startIdle=milkings[0].end;for (int i=1;i<N;i++){if(milkings[i].start>startIdle){durIdle=milkings[i].start-startIdle;if(durIdle>maxIdle)maxIdle=durIdle;startIdle=milkings[i].end;}else{startIdle=max(startIdle,milkings[i].end);}}outfile<<maxMilking<<" "<<maxIdle<<endl;delete[] milkings;return 0;}

原创粉丝点击