Pagini recente » Cod sursa (job #1836215) | Cod sursa (job #3206529) | Cod sursa (job #1529923) | Cod sursa (job #1907032) | Cod sursa (job #1202347)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
ifstream f ("lupu.in");
ofstream g ("lupu.out");
const int NMAX = 100000 + 1;
int n, x, l, t;
vector <int> v[NMAX];
priority_queue <int> q;
void citeste () {
f >> n >> x >> l;
int d, c, a;
for (int i = 1; i <= n; i++) {
f >> d >> c;
if (x > d)
a = (x - d) / l,
v[a].push_back(c),
t = max(t, a);
}
}
void rezolva () {
int sol = 0;
int k;
for (int i = t; i >= 0; i--) {
k = v[i].size();
for (int j = 0; j < k; j++) q.push(v[i][j]);
if (!q.empty ()) sol += q.top(), q.pop();
}
g << sol << '\n';
}
int main () {
citeste ();
rezolva ();
return 0;
}