Cod sursa(job #998635)

Utilizator poptibiPop Tiberiu poptibi Data 17 septembrie 2013 19:44:51
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;

const int NMAX = 100010;

priority_queue<long long> Q;
long long N, X, L, Ans, Max;
pair<long long, long long> V[NMAX];

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

    fin >> N >> X >> L;
    for(int i = 1; i <= N; ++ i)
    {
        fin >> V[i].first >> V[i].second;
        V[i].first = (X - V[i].first) / L;
        Max = max(Max, V[i].first);
    }

    sort(V + 1, V + N + 1);
    for(int i = N, j = Max; j >= 0; -- j)
    {
        while(i > 0 && V[i].first == j) Q.push(V[i].second), i --;
        if(!Q.empty()) Ans += Q.top(), Q.pop();
    }

    fout << Ans;

    return 0;
}