Pagini recente » Istoria paginii utilizator/bartu | Istoria paginii utilizator/bartu | Istoria paginii utilizator/bartu | Diferente pentru problema/jungla intre reviziile 22 si 16 | Cod sursa (job #3359021)
#include <bits/stdc++.h>
#define int ll
using namespace std;
using ll = long long;
struct sheep {
int d, v;
};
signed main() {
ifstream cin("lupu.in");
ofstream cout("lupu.out");
cin.tie(0)->sync_with_stdio(0);
int n, x, l; cin >> n >> x >> l;
sheep a[n];
for(int i = 0; i < n; i ++) {
auto &[d, v] = a[i]; cin >> d >> v;
if(d <= x)
d = (x - d) / l;
else
d = -67;
}
sort(a, a + n, [](sheep a, sheep b){
return a.d > b.d;
});
int last = -1, ans = 0;
priority_queue<int> pq;
for(int i = 0; i < n && a[i].d >= 0; i ++) {
if(last == -1) {
last = a[i].d;
} else while(last > a[i].d && pq.size()) {
ans += pq.top();
pq.pop();
last --;
}
pq.push(a[i].v);
}
ans += pq.top();
cout << ans;
}