Cod sursa(job #1693374)

Utilizator sucureiSucureiRobert sucurei Data 22 aprilie 2016 23:09:41
Problema Overlap Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <cstdio>
#include <algorithm>
#include <queue>
#define nmax 100005
using namespace std;
long long sol;
int n,x,l;
struct oaie {int d;
int p;} v[nmax];

priority_queue <int> h;

bool cmp(const oaie &a,const oaie &b)
{
    return a.d>b.d;
}

int main()
{
    freopen("lupu.in","r",stdin);
    freopen("lupu.out","w",stdout);
    int i,j;

    scanf("%d %d %d",&n,&x,&l);
    for (i=1;i<=n;i++) {
            if (v[i].d>x) {
                i--;
                n--;
            }
        else {
            scanf("%d %d",&v[i].d,&v[i].p);
            v[i].d=x-v[i].d;
            if (l)
                v[i].d/=l;
            v[i].d++;
        }
    }
    sort(v+1,v+n+1,cmp);
    j=v[1].d;
    i=1;
    while (j>=1) {
        while (v[i].d>=j) {
            h.push(v[i].p);
            i++;
        }
        if (!h.empty()) {
            sol+=1LL*h.top();
            h.pop();
        }
        j--;
    }
    printf("%lld",sol);
    return 0;
}