首先题意很清晰,给出并列的几个时间段,找出最长有人挤奶时间时间段和最长无人机乃时间段。
把有人挤奶的时间标记为1,无人挤奶的时间标记为0,然后再枚举寻找。
代码:
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int Time[1000010];
int main()
{
int start,end,sum=0,begin=1000010,ansd=0,ansx=0;
int n;
cin>>n;
int i,j;
memset(Time,0,sizeof(Time));
while(n--)
{
cin>>start>>end;
sum=max(sum,end);
begin=min(start,begin);
for(i=start;i<end;i++)
{
Time[i]=1;
}
}
int c=0,d=0;
int a,b;
for(i=begin;i<=sum;i++)
{
if(Time[i])
{
ansd++;
}
if(!Time[i])
{
ansx++;
}
if(Time[i]&&!Time[i+1]||i==sum)
{
c=max(c,ansd);
ansd=0;
}
if(!Time[i]&&Time[i+1])
{
d=max(d,ansx);
ansx=0;
}
}
cout<<c<<' '<<d;
return 0;
}