Cod sursa(job #2043628)

Utilizator AndreidgDragomir Andrei Valentin Andreidg Data 20 octombrie 2017 12:23:44
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 100005;
ifstream f("lupu.in");
ofstream g("lupu.out");

struct car
{
    int lana;
    int d;
}oi[N];

int n,x,l,nh;
long long sum = 0;
int pl[N];
priority_queue <int> h;

void coboara()
{
    //g<<h[1]<<" ";
    if(!h.empty())
    {
        sum += h.top();
        h.pop();

    }

}
bool cmp(car a, car b)
{

    return a.d>b.d;
}
int main()
{
    f>>n>>x>>l;
    nh = 0 ;

    for(int i = 1;i <= n; i++)
    {
        int t = 0;
        f>>oi[i].d>>oi[i].lana;
        t = (x-oi[i].d) / l;
        if(oi[i].d>x)
            t = -1;
        oi[i].d = t;
    }

    sort(oi+1,oi+n+1,cmp);

    int ct = 1;
    for(int i = x/l;i >= 0; i--)
    {

        while(ct<= n && i == oi[ct].d)
        {
            h.push(oi[ct].lana);
            ct++;
        }
        coboara();
    }
    g<<sum;
    f.close();
    g.close();
    return 0;
}