#include <iostream>
#include <cstdio>
#include <cmath>
#include <iomanip>
#include <vector>
#include <map>
#include <cstring>
#include <algorithm>
using namespace std;
struct Cow{
int S;
int E;
};
typedef long long ll;
int N, T;
Cow cow[25001];
bool Cmp(Cow a, Cow b)
{
if (a.S != b.S) {
return a.S < b.S;
}
return a.E > b.E;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> N >> T;
for (int i = 0; i < N; i++) {
cin >> cow[i].S >> cow[i].E;
}
sort(cow, cow + N, Cmp);
int ans = 0;
int end = 0, idx = 0;
while (end < T) {
int begin = end + 1;
for (int i = idx; i < N; i++) {
if (cow[i].S <= begin) {
if (cow[i].E >= begin) {
end = max(cow[i].E, end);
}
}
else {
idx = i;
break;
}
}
if (begin > end) {
cout << -1 << endl;
return 0;
}
else {
ans++;
}
}
cout << ans << endl;
return 0;
}
挑战程序设计竞赛 POJ 2376 Cleaning Shifts 贪心
最新推荐文章于 2020-09-28 23:50:24 发布