Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stack>
- #include <string>
- #include <iostream>
- #include <stdio.h>
- #include <set>
- #include <vector>
- #include <algorithm>
- #include <map>
- #include <fstream>
- using namespace std;
- int main() {
- long long n, d;
- cin >> n >> d;
- vector <pair <long long, long long> > f(n);
- vector <long long> sum(n);
- vector <long long> mon(n);
- for (int i = 0; i < n; ++i) {
- long long m, s;
- cin >> m >> s;
- f[i] = {m , s};
- mon[i] = m;
- }
- sort(f.begin(), f.end());
- sort(mon.begin(), mon.end());
- sum[0] = f[0].second;
- for (int i = 1; i < n; ++i) {
- sum[i] = sum[i - 1] + f[i].second;
- }
- long long ans = 0;
- for (int i = 0 ; i < n; ++i) {
- auto it = lower_bound(mon.begin(), mon.end(), mon[i] + d) - mon.begin();
- --it;
- long long cur = 0;
- if (i == 0) {
- cur = sum[it];
- }
- else {
- cur = sum[it] - sum[i -1];
- }
- ans = max(ans, cur);
- }
- cout << ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement