Cod sursa(job #925791)

Utilizator PGSBRobert Nistor PGSB Data 24 martie 2013 19:02:26
Problema Lupul Urias si Rau Scor 84
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;

#define fs first
#define sc second
#define pb push_back
#define mp make_pair

using namespace std;
int N,X,L,a,b,maxim,ind;
long long rez;
vector<pair<int,int> > v;
priority_queue<int> pq;
int main()
{
freopen("lupu.in","r",stdin);
freopen("lupu.out","w",stdout);
    scanf("%d%d%d",&N,&X,&L);
    for(int i=1;i<=N;++i)
    {
        scanf("%d%d",&a,&b);
        if(a<=X)
        {
        a=(X-a)/L+1;
        maxim = max(a,maxim);
       // printf("%d %d\n",a,b);

        v.pb(mp(a,b));
        }
    }
    sort(v.begin(),v.end());

    ind = N-1;


    while(ind>=0)
    {

    while(v[ind].fs == maxim)
    {
        pq.push(v[ind].sc);
        --ind;
        if(ind<0)
            break;
    }
        if(!pq.empty())
        {
        rez=rez+pq.top();
        pq.pop();
        }
        --maxim;
    }

printf("%lld",rez);
return 0;
}