Pagini recente » Cod sursa (job #417636) | Cod sursa (job #1196590) | Cod sursa (job #726303) | Cod sursa (job #417532) | Cod sursa (job #1275152)
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
const int kMaxN = 100005;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
int N, X, L;
long long S;
struct Sheep {
int val, step;
bool operator<(const Sheep &other) const {
return step > other.step;
}
} a[kMaxN];
priority_queue<int> Q;
int main() {
fin >> N >> X >> L;
for (int i = 0; i < N; ++i) {
int dist;
fin >> dist >> a[i].val;
dist = X - dist + 1;
a[i].step = dist / L + ((dist % L) ? 1 : 0);
}
sort(a, a + N);
for (int step = a[0].step, i = 0; step && i < N; --step) {
while (i < N && a[i].step == step)
Q.push(a[i++].val);
if (!Q.empty()) {
S += Q.top();
Q.pop();
}
}
fout << S << "\n";
return 0;
}