注意事项
不能采取遍历的方式,这样会超时,正确的解法是预处理,求出任意时刻的,可满足的出行计划。
满分代码实现
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
class Solution {
private:
int MAXDAYS = 2000001;
public:
void solve();
};
void Solution::solve() {
int n = 0, m = 0, k = 0;
cin >> n >> m >> k;
int t = 0, c = 0;
vector<int> start(MAXDAYS, 0);
vector<int> end(MAXDAYS, 0);
vector<int> query(MAXDAYS, 0);
for (int i = 0; i < n; i++) {
cin >> t >> c;
start[max(0, t - c + 1)]++;
end[t]++;
}
query[0] = start[0];
for (int i = 1; i <= MAXDAYS; i++) {
query[i] = query[i - 1] + start[i] - end[i - 1];
}
for (int i = 0; i < m; i++) {
cin >> t;
cout << query[t + k] << endl;
}
}
int main() {
// 提高cin,cout的速度
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
Solution solution;
solution.solve();
return 0;
}