Cod sursa(job #1536606)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 26 noiembrie 2015 14:05:57
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<algorithm>
#include<vector>
#define d first
#define b second
#include<queue>
using namespace std;
pair <long long , long long>a[100001];
vector<long long>mat[1 << 20];
priority_queue<long long>pq;
long long n , x , l;
int main()
{
    freopen("lupu.in" , "r" , stdin);
    freopen("lupu.out" , "w" , stdout);
    scanf("%lld %lld %lld" , &n , &x , &l);
    for (long long i=1 ; i<=n ; ++i)
    {
        scanf("%lld %lld" , &a[i].d , &a[i].b);
        if(x >= a[i].d)
            mat[(x-a[i].d)/l+1].push_back(i);
    }
    long long ans=0;
    for(long long i=n ; i>=1 ; --i)
    {
        for(long long j=0 ; j<mat[i].size() ; ++j)
            pq.push(a[mat[i][j]].b);
        if(! pq.empty())
        {
            ans+=pq.top();
            pq.pop();
        }
    }
    printf("%lld" , ans);
    return 0;
}