Cod sursa(job #3140277)

Utilizator dobreraduDobre Radu Fabian dobreradu Data 5 iulie 2023 11:26:51
Problema Lupul Urias si Rau Scor 88
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("lupu.in");
ofstream out("lupu.out");
const int NMAX = 100005;
struct Radu{
    long long dist;
    int lana;
};
Radu v[NMAX];
bool cmp( Radu a, Radu b ){
    return a.dist > b.dist;
}
priority_queue <long long> pq;
int main()
{
    int n, x, l;
    long long maxi = 0;
    in >> n >> x >> l;
    for( int i = 0; i < n; i++ ){
        in >> v[i].dist >> v[i].lana;
        v[i].dist = (x - v[i].dist) / l;
        maxi = max( maxi, v[i].dist );
    }
    sort( v, v + n, cmp );
    int j = 0;
    long long ans = 0;
    for( int i = 0; i <= maxi; i++ ){
        while( j < n-1 && v[j].dist == v[j+1].dist ){
            pq.push(v[j].lana);
            j++;
        }
        if( j < n ){
            pq.push(v[j].lana);
            j++;
        }
        ans += pq.top();
        pq.pop();
    }
    out << ans;
    return 0;
}