Cod sursa(job #1793582)

Utilizator cordun_cristinaCristina Maria Cordun cordun_cristina Data 31 octombrie 2016 10:50:59
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");

const int Nmax = 100005;
int n, x, l, d[Nmax], dist;
long long s;
pair <int, int> a[Nmax];
priority_queue <int> p;

bool Crit(pair<int, int> b, pair<int, int> c)
{
    return b.first>c.first;
}

int main()
{
    f>>n>>x>>l;
    for(int i = 1; i <= n; i++)
    {
        f>>d[i]>>a[i].second;
        a[i].first = (x-d[i])/l+1;
        //g<<a[i].first<<' '<<a[i].second<<'\n';
    }
    sort(a+1, a+1+n, Crit);
    dist = a[1].first;
    int i = 1;
    while(dist)
    {
        while(i <= n && dist == a[i].first)
        {
            p.push(a[i].second);
            i++;
        }
        if(!p.empty())
        {
            s += p.top();
            p.pop();
        }
        dist--;
    }
    g<<s<<'\n';
    return 0;
}