Cod sursa(job #976470)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 23 iulie 2013 12:29:51
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

const int MAX_N = 100002;

int N, X, L;
vector < int > v[MAX_N];
priority_queue < int > H;
long long int S;

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

    f >> N >> X >> L;
    int Max = 0;
    for(int i = 1, D, A; i <= N; ++i) {
        f >> D >> A;
        int t  = (X - D) / L + 1;
        if(t < 0)
            continue;
        v[t].push_back(A);
        if(t > Max)
            Max = t;
    }

    for(int i = Max; i >= 1; --i) {
        for(size_t j = 0; j < v[i].size(); ++j)
            H.push(v[i][j]);
        if(!H.empty())
            S += H.top(), H.pop();
    }

    g << S << '\n';

    f.close();
    g.close();

    return 0;
}