Cod sursa(job #969461)

Utilizator crisbodnarCristian Bodnar crisbodnar Data 4 iulie 2013 13:51:07
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <queue>

#define f first
#define s second

using namespace std;

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

const int N = 100005;

long long n, x, l, sol;
typedef pair <long long, int> oi; oi v[N];
priority_queue <int> h;

bool cmp(const oi &a, const oi &b)
{
    if(a.f == b.f) return a.s > b.s;
    return a.f > b.f;
}

int main()
{
    fin>>n>>x>>l;
    for(int i=1; i<=n; i++)
    {
        fin>>v[i].f>>v[i].s;
        v[i].f = (x - v[i].f) / l + 1;
    }
    sort(v+1, v+n+1, cmp);

    for(int j = v[1].f, i = 1; j; --j)
    {
        while(i < n && j == v[i].f)
            h.push(v[i++].s);
        if(!h.empty())
        {
            sol += h.top();
            h.pop();
        }
    }
    fout<<sol;
    return 0;
}