Cod sursa(job #2858674)

Utilizator razviii237Uzum Razvan razviii237 Data 28 februarie 2022 10:46:43
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>

using namespace std;

ifstream f("lupu.in");
ofstream g("lupu.out");

const int maxn = 100005;

struct xy {
    int x, y;
};
xy v[maxn];

bool cmp(xy a, xy b) {
    return a.x < b.x;
}
priority_queue <int> q;

int main()
{
    int i;
    int n, m, k;
    int ans = 0;

    f >> n >> m >> k;
    for(i = 1; i <= n; i ++) {
        f >> v[i].x >> v[i].y;
    }
    sort(v + 1, v + n + 1, cmp);
    int bu = m, bd = bu - k + 1;
    for(i = n; i >= 1; i --) {
        if(v[i].x < bd) {
            bu = bd;
            bd = bu - k + 1;
            if(!q.empty()) {
                g << q.top() << '\n';
                ans += q.top();
            }
            while(!q.empty())
                q.pop();
        }
        while(v[i].x < bd) {
            bu = bd;
            bd = bu - k + 1;
        }
        q.push(v[i].y);
    }
    if(!q.empty()) {
        g << q.top() << '\n';
        ans += q.top();
    }

    g << "\nraspuns:\n";
    g << ans << '\n';

    f.close();
    g.close();
    return 0;
}