1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int a[10000000]; // a[i]: i时刻开始的这一秒钟有几个人在挤奶 int main() { int n; cin >> n; int maxr = 0, minl = 99999999; for (int k = 1; k <= n; k++) { int l, r; cin >> l >> r; // 当前挤奶工的工作时间为 l~r for (int i = l; i <= r - 1; i++) a[i]++; maxr = max(maxr, r); // 记录最大值 minl = min(minl, l); // 记录最小值 } int ans1 = 0, ans2 = 0; int last = minl; // 上一个时刻 for (int k = minl + 1; k <= maxr; k++) { //如果当前无人挤奶并且前一个时间有人挤奶 if (a[k] == 0 && a[k - 1] > 0) { ans1 = max(ans1, k - last);//前一个有人挤奶的时间长度为 k-last last = k; } //如果当前有人挤奶并且前一个时间无人挤奶 if (a[k] > 0 && a[k - 1] == 0) { ans2 = max(ans2, k - last);//前一个无人挤奶的时间长度为 k-last last = k; } } //最后一段有人挤奶的时间 if (a[maxr] > 0) ans1 = max(ans1, maxr - last); cout << ans1 << " " << ans2; return 0; }
- 1
信息
- ID
- 928
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 7
- 标签
- 递交数
- 117
- 已通过
- 25
- 上传者