P1458 - [蓝桥杯2019初赛]外卖店优先级 - New Online Judgehttp://oj.ecustacm.cn/problem.php?id=1458
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
const int N = 100004;
int n, m, t;
multiset<int>s[N];
bool check(int id) {
if (s[id].empty()) {
return 0;
}
vector<int>time;
for (auto it = s[id].begin(); it != s[id].end(); it++) {
time.push_back(*it);
}
int cur = 2, flag = 0;
for (int i = 1; i < time.size(); i++) {
int delta = time[i] - time[i - 1];
if (delta > 1) {
cur -= delta - 1;
}
if (cur <= 3) {
flag = 0;
}
cur += 2;
if (cur < 2) {
cur = 2;
}
if (cur > 5) {
flag = 1;
}
}
cur -= t - time.back();
return cur >= 4 && flag;
}
int main() {
// system("chcp 65001");
// freopen("C:/Users/zhaochen/Desktop/input.txt", "r", stdin);
cin.tie(0);
cout.tie(0);
cin >> n >> m >> t;
while (m--) {
int ts, id;
cin >> ts >> id;
s[id].insert(ts);
}
int ans = 0;
for (int i = 1; i <= n; i++) {
if (check(i)) {
ans++;
}
}
cout << ans;
return 0;
}