Pagini recente » Cod sursa (job #1996577) | Monitorul de evaluare | Cod sursa (job #1222349) | Cod sursa (job #2089877) | Cod sursa (job #2555417)
#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;
}