Cod sursa(job #1311651)

Utilizator vasica38Vasile Catana vasica38 Data 8 ianuarie 2015 14:25:36
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
#include<algorithm>
#include<queue>

using namespace std;
struct lup
{
    int d;
    int p;
    int t;
}a[100001];

int i,j,k,m,u,t,L,x,dist,n;
priority_queue<int> q;
bool cmp (lup o1, lup o2)
{
    return (o1.d<o2.d);
}
int main()
{
    freopen("lupu.in","r",stdin);
    freopen("lupu.out","w",stdout);
    scanf("%d%d%d",&n,&dist,&x);
    for (i=1; i<=n; ++i)
    {
        scanf("%d%d",&a[i].d,&a[i].p);
        //a[i].t=(dist-a[i].d)/x;
    }
    sort(a+1,a+n+1,cmp);
    int d1;
    long long sol=0;
    for (i=1,d1=0; i<=n && d1<=dist; d1+=x)
    {
        while (i<=n && a[i].d<=d1)
        {
            q.push(a[i].p);
            ++i;
        }
    if (q.size())
    {
        sol+=q.top();
        q.pop();
    }
    }
    printf("%lld",sol);
return 0;
}