Cod sursa(job #3178016)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 30 noiembrie 2023 19:57:24
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <algorithm>
#include <iostream>
#include <fstream>
#include <queue>

#define int long long

using namespace std;

const int nmax = 1e5;
pair<int, int> a[5 + nmax];

signed main() {
    ifstream fin("lupu.in");
    ofstream fout("lupu.out");
    int n, x, l;
    fin >> n >> x >> l;
    for (int i = 1; i <= n; i++) {
        int d;
        fin >> d >> a[i].first;
        a[i].second = (x - d) / l;
    }
    sort(a + 1, a + n + 1, [&](pair<int, int> a, pair<int, int> b) {
        if (a.second == b.second)
            return a.first < b.first;
        return a.second < b.second;
    });
    int left = 1, sum = 0, ans = 0;
    for (int right = 1; right <= n; right++) {
        while (a[right].second < right - left) {
            sum -= a[left].first;
            left++;
        }
        sum += a[right].first;
        ans = max(ans, sum);
    }
    fout << ans << '\n';
    return 0;
}