Pagini recente » Rating Catu Bogdan (catu_bogdan_99) | Cod sursa (job #2842872) | Cod sursa (job #3122428) | Sedinta 2008-10-10 | Cod sursa (job #3273318)
#include <bits/stdc++.h>
using namespace std;
struct sheep {
int d, c;
} v[100001];
bool comp(sheep a, sheep b) {
return a.d > b.d;
}
int n, x, l;
int main() {
ifstream cin("lupu.in");
ofstream cout("lupu.out");
cin >> n >> x >> l;
for (int i = 1; i <= n; ++i) {
cin >> v[i].d >> v[i].c;
}
sort(v + 1, v + n + 1, comp);
long long ans = 0, dist = 0;
int maxVal = 0;
for (int i = 1; i <= n; ++i) {
if (v[i].d + dist + l > x && v[i].d + dist <= x) {
maxVal = max(maxVal, v[i].c);
if (i + 1 <= n && v[i + 1].d + dist + l <= x) {
ans += maxVal;
maxVal = 0;
dist += l;
}
}
if (v[i].d + dist + l <= x) {
ans += v[i].c;
dist += l;
}
}
if (maxVal != 0) {
ans += maxVal;
}
cout << ans;
}