Cod sursa(job #1855198)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 23 ianuarie 2017 15:05:41
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <set>
#define DIM 100010
#define INF -(1<<31)
#define f first
#define s second
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
multiset<int> heap;
multiset<int>::iterator it;
pair<int,int> v[DIM];
int n,x,l,i;
long long int s,t,q;

int main()
{
    heap.insert(INF);
    fin >> n >> x >> l;
    for(i=1;i<=n;i++)
    {
        fin >> v[i].f>>v[i].s;
    }
    sort(v+1,v+n+1);
    while(v[1].f+t+l<=x)
        t+=l;
    for(i=1;i<=n;i++)
        v[i].f+=t;
    i=1;
    while(t>=0)
    {
        while(v[i].f-q<=x and i<=n)
        {
            heap.insert(-v[i].s);
            i++;
        }
        it=heap.begin();
        it++;
        if(it!=heap.end())
        {
            s+=-(*it);
            heap.erase(it);
        }
        q+=l;
        t-=l;
    }
    fout << s << endl;
    return 0;
}