Cod sursa(job #3139133)

Utilizator MAlex2019Melintioi George Alexandru MAlex2019 Data 25 iunie 2023 15:54:41
Problema Lupul Urias si Rau Scor 16
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;

ifstream fin("lupu.in");
ofstream fout("lupu.out");

struct oaie {
    int d, lana;

    oaie(int d = 0, int lana = 0) {
        this->d = d;
        this->lana = lana;
    }
    bool operator<(const oaie &a) const {
        return lana < a.lana;
    }
    friend istream& operator>>(istream &is, oaie &x) {
        int d, lana;
        is >> d >> lana;
        x = oaie(d, lana);
        return is;
    }
};
const int maxn = 1e5;
oaie v[maxn];


int x, l;
int getGroup(oaie a) {
    return (x - a.d)/l;
}

bool cmp(oaie a, oaie b) {
    return getGroup(a) > getGroup(b);
}

int main() {
    int n;
    fin >> n >> x >> l;
    for (int i = 0; i < n; i++)
        fin >> v[i];
    sort(v, v + n, cmp);
    priority_queue<oaie> goolah;
    goolah.push(v[0]);
    long long answer = 0;
    for (int i = 1; i < n; i++) {
        if (getGroup(v[i]) != getGroup(v[i - 1])) {
            answer += goolah.top().lana;
            goolah.pop();
        }
        goolah.push(v[i]);
    }
    answer += goolah.top().lana;
    fout << answer << '\n';

    return 0;
}