milking cows
http://ace.delos.com/usacoprob2?a=5rGlhwmarzs&S=milk2
/*
ID:billat11
LANG:C++
TASK:milk2
*/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <fstream>
#include <assert.h>
using namespace std;
struct milk
{
int s;
int e;
};
struct milk inmilk[5005],outmilk[5005];
bool cmp(struct milk a,struct milk b)
{
return (a.s<=b.s);
}
int main()
{
//FILE *in,*out;
//in = fopen("beads.in", "r");
//out = fopen ("beads.out", "w");
fstream input, output;
// string inputFilename = "beads.in", outputFilename = "beads.out";
//input.open(inputFilename.c_str(), ios::in);
//output.open(outputFilename.c_str(), ios::out);
input.open("milk2.in",ios::in);
output.open("milk2.out",ios::out);
//assert(in != NULL && out != NULL);
int n,start,end,num,con,idle;
struct milk pre;
input>>n;
int i;
for(i=0;i<n;i++)
{
input>>start>>end;
inmilk[i].s=start;
inmilk[i].e=end;
}
sort(inmilk,inmilk+n,cmp);
num=0;
pre.s=inmilk[0].s;
pre.e=inmilk[0].e;
inmilk[n].s=1000005;
inmilk[n].e=1000005;
for(i=1;i<=n;i++)
{
if(inmilk[i].s<=pre.e)
{
pre.e=max(inmilk[i].e,pre.e);
}
else
{
num++;
outmilk[num].s=pre.s;
outmilk[num].e=pre.e;
pre.s=inmilk[i].s;
pre.e=inmilk[i].e;
}
}
con=0;
idle=0;
for(i=1;i<=num;i++)
{
if(outmilk[i].e-outmilk[i].s>con) con=outmilk[i].e-outmilk[i].s;
}
i=2;
if(num>=2)
{
while(i<=num)
{
if(outmilk[i].s-outmilk[i-1].e>idle)
idle=outmilk[i].s-outmilk[i-1].e;
i++;
}
}
output<<con<<" "<<idle<<endl;
//fclose(in);
//fclose(out);
return 0;
}

浙公网安备 33010602011771号