Cod sursa(job #2081128)

Utilizator workwork work work Data 4 decembrie 2017 00:16:48
Problema Lupul Urias si Rau Scor 32
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <algorithm>
#include <queue>

#define f first
#define s second

using namespace std;

ifstream F( "lupu.in" );
ofstream G( "lupu.out" );

int n, X, L, d, a, k, t, j, ans;
pair<int, int> v[ 100005 ];
priority_queue<int> pq;

int main()
{
    F >> n >> X >> L;
    for( int i = 1; i <= n; ++ i )
    {
        F >> d >> a;
        if( d <= X && (X - d) / L + 1 <= X )
            v[ ++ k ] = { -((X - d) / L + 1), a };
    }
    sort( v + 1, v + k + 1 );
    for( int i = 1; i <= k; ++ i )
    {
        t = v[ i ].f;
        j = i;
        while( v[ i ].f == t )
        {
            pq.push( v[ i ].s );
            i ++;
        }
        ans += pq.top();
        pq.pop();
        if( i != j ) i--;
    }
    G << ans;
    return 0;
}