Cod sursa(job #2558784)

Utilizator gogu5Gogu Vrea la ONI gogu5 Data 26 februarie 2020 19:55:57
Problema Lupul Urias si Rau Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

std::priority_queue< int >pq;

struct oaie {
    int dist, lana;
} o[100000];

int mx( int a, int b ) {
    return a > b ? a : b;
}

int compar( oaie A, oaie B ) {
    return A.dist > B.dist;
}

int main() {
    FILE *fin, *fout;
    int n, x, l, i, d, a, dm = 0, j, s = 0;
    fin = fopen( "lupu.in", "r" );
    fout = fopen( "lupu.out", "w" );
    fscanf( fin, "%d%d%d", &n, &x, &l );
    for ( i = 0; i < n; i++ ) {
        fscanf( fin, "%d%d", &d, &a );
        o[i].dist = ( x - d ) / l + 1;
        dm = mx( dm, o[i].dist );
        o[i].lana = a;
    }
    std::sort( o, o + n, compar );
    j = 0;
    for ( i = dm; i > 0; i-- ) {
        while ( j < n && o[j].dist == i ) {
            pq.push( o[j].lana );
            j++;
        }
        if ( !pq.empty() ) {
            s += pq.top();
            pq.pop();
        }
    }
    fprintf( fout, "%d", s );
    fclose( fin );
    fclose( fout );
    return 0;
}