Cod sursa(job #2498449)

Utilizator FrostfireMagirescu Tudor Frostfire Data 23 noiembrie 2019 22:09:20
Problema Lupul Urias si Rau Scor 88
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <queue>
#include <algorithm>
#define NMAX 100000

using namespace std;

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

long long n, x, l;
long long sol;
priority_queue <long long> pq;
pair <long long, long long> v[NMAX+10];

inline bool mycmp(pair <long long, long long> a, pair <long long, long long> b)
{   return a.first > b.first;
}

int main()
{
    f >> n >> x >> l;
    for(int i=1; i<=n; i++)
        {   long long a, b;
            f >> a >> b;
            if(a <= x)
                {   v[i].first = (x - a) / l + 1;
                    v[i].second = b;
                }
        }
    sort(v+1, v+n+1, mycmp);
    long long i=1;
    while(i <= n)
        {   pq.push(v[i].second);
            while(v[i].first == v[i+1].first) pq.push(v[i+1].second), i++;
            i++;

            for(int j=1; j<=v[i-1].first-v[i].first; j++)
                {   long long val = pq.top();
                    pq.pop();
                    sol += val;
                }
        }
    g << sol << '\n';
    return 0;
}