Cod sursa(job #1282133)

Utilizator akaprosAna Kapros akapros Data 3 decembrie 2014 23:06:51
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
int n,i,j,p,q,nr,l,x,lv,Max;
struct nod
{
    int x;
    int y;
}v[100005];
priority_queue< int >Q;
long long sol;
int cmp(const nod a,const nod b)
{
    return a.x>b.x;
}
int main()
{
    freopen("lupu.in","r",stdin);
    freopen("lupu.out","w",stdout);
    scanf("%d %d %d",&n,&x,&l);
    for (i=1;i<=n;i++)
    {
        scanf("%d %d",&p,&q);
        if (p<=x)
        {
            v[++lv].x=(x-p)/l;
            v[lv].y=q;
            Max=max(Max,(x-p)/l);
        }
    }
    sort(v+1,v+lv+1,cmp); p=1;
    for (i=Max;i>=0;i--)
    {
        while (v[p].x==i)
        Q.push(v[p].y),p++;
        if (Q.size())
        {
            sol+=Q.top();
            Q.pop();
        }
    }
    printf("%lld",sol);
    return 0;
}