Cod sursa(job #2555417)

Utilizator stefanpiturStefan Alexandru Pitur stefanpitur Data 24 februarie 2020 00:14:05
Problema Lupul Urias si Rau Scor 32
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <cstdio>
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;

ifstream fin("lupu.in");
ofstream fout("lupu.out");

const int N = 100000;
struct oaie{
    int timp, lana;
} oi[N];

priority_queue <int> pq;

bool cmp(oaie a, oaie b){
    if(a.timp < b.timp)
        return true;
    return false;
}

int main()
{
    int n,x,l,i,p,dist;
    long long lana;
    fin >> n >> x >> l;
    p = 0;
    for(i=0; i<n; i++){
        fin >> dist >> lana;
        if(dist <= x){
            oi[p].timp = (x - dist)/l + 1;
            oi[p++].lana = lana;
        }
    }
    n = p;
    sort(oi, oi+n, cmp);
    i = n-2;
    lana = 0;
    while(i >= 0){
        while(i >= 0 && oi[i].timp == oi[i+1].timp){
            pq.push(oi[i+1].lana);
            i--;
        }
        pq.push(oi[i+1].lana);
        lana = lana + pq.top();
        pq.pop();
        i--;
    }
    fout << lana << "\n";
    return 0;
}