Pagini recente » Cod sursa (job #1012054) | Cod sursa (job #36373) | Cod sursa (job #1014626) | Cod sursa (job #729649) | Cod sursa (job #3139133)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
struct oaie {
int d, lana;
oaie(int d = 0, int lana = 0) {
this->d = d;
this->lana = lana;
}
bool operator<(const oaie &a) const {
return lana < a.lana;
}
friend istream& operator>>(istream &is, oaie &x) {
int d, lana;
is >> d >> lana;
x = oaie(d, lana);
return is;
}
};
const int maxn = 1e5;
oaie v[maxn];
int x, l;
int getGroup(oaie a) {
return (x - a.d)/l;
}
bool cmp(oaie a, oaie b) {
return getGroup(a) > getGroup(b);
}
int main() {
int n;
fin >> n >> x >> l;
for (int i = 0; i < n; i++)
fin >> v[i];
sort(v, v + n, cmp);
priority_queue<oaie> goolah;
goolah.push(v[0]);
long long answer = 0;
for (int i = 1; i < n; i++) {
if (getGroup(v[i]) != getGroup(v[i - 1])) {
answer += goolah.top().lana;
goolah.pop();
}
goolah.push(v[i]);
}
answer += goolah.top().lana;
fout << answer << '\n';
return 0;
}