Cod sursa(job #1847698)

Utilizator ciprianprohozescuProhozescu Ciprian ciprianprohozescu Data 14 ianuarie 2017 21:22:03
Problema Lupul Urias si Rau Scor 16
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;

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

struct oaie
{
    long long t, a;
};

long long nr, x, l, s, n;
oaie o[100010];
priority_queue<int> q;

void citire();
bool crit(oaie a, oaie b);
void rezolvare();

int main()
{
    citire();
    rezolvare();
    fout << s << '\n';
    fout.close();
    return 0;
}

void citire()
{
    long long i, lg;
    fin >> nr >> x >> l;
    for (i = 1; i <= nr; i++)
    {
        fin >> lg >> o[i].a;
        if (x >= lg)
            o[i].t = (x - lg) / l + 1;
    }
    sort(o + 1, o + nr + 1, crit);
}
bool crit(oaie a, oaie b)
{
    return a.t >= b.t;
}
void rezolvare()
{
    long long i = 1, zi, j;
    zi = o[1].t;
    if (x > 0)
    {
        while (zi > 0)
        {
            while (o[i].t == zi)
            {
                q.push(o[i].a);
                i++;
            }
            for (j = 1; j <= zi - o[i].t && !q.empty(); j++)
            {
                s += q.top();
                q.pop();
            }
            zi = o[i].t;
        }
    }
}