Pagini recente » Cod sursa (job #366854) | Cod sursa (job #2411942) | Cod sursa (job #784919) | Cod sursa (job #2868122) | Cod sursa (job #2466307)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
#define nmx 100005
#define ll long long
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
ll n, i, j, nr, dmx, incr, pos, rez;
struct Per {
ll id, ln;
bool operator<(const Per &alt)const
{ return id > alt.id; }
} v[nmx];
priority_queue<int> pq;
int main () {
fin >> n >> dmx >> incr;
for(i = 1; i <= n; i++) {
fin >> v[i].id >> v[i].ln;
if (v[i].id <= dmx) v[i].id = (dmx - v[i].id) / incr + 1;
else v[i].id = 0;
}
sort(v + 1, v + n + 1);
v[++n] = {0, 0};
v[0] = v[1];
for (i = 1; i <= n + 1; i++) {
if (v[i].id != v[i-1].id) {
nr = min(v[i-1].id - v[i].id, (ll)pq.size());
while (nr--) {
rez += pq.top();
pq.pop();
}
}
pq.push((int)v[i].ln);
}
fout << rez << "\n";
}