Cod sursa(job #1243257)

Utilizator gapdanPopescu George gapdan Data 15 octombrie 2014 18:44:20
Problema Lupul Urias si Rau Scor 16
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<algorithm>
#include<queue>
#define NMAX 100005
using namespace std;
long long d,x;
priority_queue<long long>q;
long long n,l,dist,lg,i;
long long sum=0;
struct lup
{
    long long val,ord;
}v[NMAX];
int cmp(lup r,lup p)
{
    if (r.val<p.val) return 0;
    return 1;
}
int main()
{
    ifstream f("lupu.in");
    ofstream g("lupu.out");
    f>>n>>x>>l;
    for (i=1;i<=n;++i)
    {
    f>>d>>v[i].ord;
    if (d<=x && l>0) {v[i].val=(x-d)/l+1;}
    }
    sort(v+1,v+n+1,cmp);
    i=1;
    int k=0;
    for (k=v[i].val;k>0;k--)
    {
        while (i<n && v[i].val==k)
            {
                q.push(v[i].ord);
                ++i;
            }
        if (!q.empty()){sum+=q.top();q.pop();}
    }
    g<<sum<<"\n";
    return 0;
}