Cod sursa(job #1293535)

Utilizator pop_bogdanBogdan Pop pop_bogdan Data 16 decembrie 2014 00:46:26
Problema Lupul Urias si Rau Scor 48
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

ifstream is("lupu.in");
ofstream os("lupu.out");

int N, X, L;
pair <int, int> x;
vector <pair<int,int> > V;

int maximr(-999999999);

priority_queue <int> Q;

int main()
{
    is >> N >> X >> L;
    for ( int i = 1; i <= N; ++i )
    {
        is >> x.first >> x.second;
        if ( x.first <= X )
        {
            x.first = (X-x.first)/L;
            maximr = max(maximr,x.first);
            V.push_back(x);
        }
    }

    sort(V.begin(),V.end());
    int it(V.size()-1);unsigned long long Sol(0);

    for ( int i = maximr; i >= 0; --i )
    {
        for ( ; V[it].first == i; --it )
            Q.push(V[it].second);

        if ( !Q.empty() )
        {
            Sol += Q.top(), Q.pop();
        }
    }
    os << Sol;
}