Pagini recente » Cod sursa (job #2905937) | Cod sursa (job #638080) | Cod sursa (job #3125541) | Cod sursa (job #1461468) | Cod sursa (job #3192826)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#define MAXN 100000
#define DEBUG 0
#define PR(x) (x-1)/2
#define CH1(x) (x*2)+1
#define CH2(x) (x*2)+2
using namespace std;
vector<vector<int>> v;
int nrb = 0;
static inline int bracket(int x, int y, int z){
return (x-z) / y;
}
int main(){
int n, x, y;
ifstream fin ("lupu.in");
fin >> n >> x >> y;
nrb = bracket(x, y, 0) + 1;
v.resize(nrb);
for(int i = 0; i < n; i ++){
int d, l;
fin >> d >> l;
v[bracket(x, y, d)].push_back(l);
}
fin.close();
for(int i = 0; i < nrb; i ++)
sort(v[i].begin(), v[i].end());
if(DEBUG){
for(int i = 0; i < nrb; i ++){
printf("%d: ", i);
for(int j = 0; j < (int)v[i].size(); j ++){
printf("%d ", v[i][j]);
}
printf("\n");
}
printf("\n");
}
priority_queue<int> hp;
int sum = 0;
for(int i = nrb - 1; i >= 0; i --){
for(int j = 0; j < (int)v[i].size(); j ++)
hp.push(v[i][j]);
if(!hp.empty()){
sum += hp.top();
hp.pop();
}
}
ofstream fout ("lupu.out");
fout << sum << endl;
fout.close();
return 0;
}