Pagini recente » Cod sursa (job #240664) | Borderou de evaluare (job #3007106) | Borderou de evaluare (job #2041873) | Cod sursa (job #2962301) | Cod sursa (job #3347166)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
const int NMAX = 1e5;
int n, x, l, ind;
ll answer;
multiset<int> s;
pair<int, int> v[NMAX + 1];
int main() {
fin >> n >> x >> l;
for(int i = 1; i <= n; i++) {
int d, c;
fin >> d >> c;
if(x - d >= 0) {
int k = (x - d) / l;
v[++ind] = {k, c};
}
}
sort(v + 1, v + ind + 1);
for(int i = 1; i <= ind; i++) {
s.insert(v[i].second);
}
int i = 1;
while(i <= ind) {
if(!s.empty()) {
answer += *prev(s.end());
s.erase(prev(s.end()));
}
int j = i;
while(j <= ind && v[j].first == v[i].first) {
if(s.count(v[j].second)) {
s.erase(s.find(v[j].second));
}
j++;
}
i = j;
}
fout << answer << '\n';
return 0;
}