Cod sursa(job #982401)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 9 august 2013 10:27:20
Problema Lupul Urias si Rau Scor 88
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <algorithm>
#include <fstream>
#include <vector>
#include <queue>
#define Max(a,b) (a>b?a:b)
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");
int n,X,L;
long long sol,t;
vector<pair<long,long> > v;

priority_queue<long long,vector<long long> > h;

int main(void){
    register int i;
    long long x,y;

    f>>n>>X>>L;
    for(i=0;i<n;i++){
        f>>x>>y;
        v.push_back(make_pair((X-x)/L+1,y));
        t=Max(t,v[i].first);
    }

    sort(v.begin(),v.end());

    i=n-1;
    for(;t>0;t--){
        while(v[i].first>=t && i>-1){
            h.push(v[i].second);
            i--;
        }
        sol+=h.top();
        h.pop();
    }

    g<<sol;
    f.close();
    g.close();
    return 0;
}