P1204 [USACO1.2]挤牛奶Milking Cows - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<bits/stdc++.h>
using namespace std;
struct node
{
int start, end;
}a[5010];
bool cmp(node a, node b)
{
return a.start < b.start;
}
int main()
{
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
scanf("%d%d",&a[i].start,&a[i].end);
sort(a + 1, a + 1 + n, cmp);
int st = a[1].start, ed = a[1].end;
int max1 = ed - st; //最长有人的时间段
int max2 = 0; //最长无人的时间段
for(int i = 2; i <= n; i++)
{
if(a[i].start <= ed) //前后连接上
{
ed = max(ed,a[i].end); // 更新终点end
max1 = max(max1,ed - st);//更新一下最长的有人的时间段
}
else //前后没有接上
{
max2 = max(max2, a[i].start - ed);
st = a[i].start;
ed = a[i].end; // 更新起点和终点
}
}
printf("%d %d\n",max1,max2);
return 0;
}