Cod sursa(job #1779659)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 15 octombrie 2016 15:32:59
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<cstdio>
#include<queue>
#include<vector>
const int NMAX = 100000;
using namespace std;
struct LUPU {
    int timp,lana;
} aux;
vector<LUPU>v[NMAX+5];
priority_queue<int>q;
int main() {
    freopen ( "lupu.in", "r", stdin );
    freopen ( "lupu.out", "w", stdout );
    int n, x, l, i, d, a, nr, j;
    long long s;
    scanf ( "%d%d%d", &n, &x, &l );
    for ( i = 1 ; i <= n ; ++ i ) {
        scanf ( "%d%d", &d, &a );
        if ( d <= x ) {
            nr = ( x - d ) / l + 1;
            if ( nr > n )
                nr = n;
            aux.timp=nr;
            aux.lana=a;
            v[nr].push_back(aux);
        }
    }
    s = 0;
    for ( i = n ; i >= 1 ; -- i ) {
        for ( j = 0 ; j < v[i].size() ; ++ j )
            q.push ( v[i][j].lana );
        if ( !q.empty() ) {
            nr=q.top();
            s=s+nr;
            q.pop();
        }
    }
    printf ( "%lld",s );
    return 0;
}