Pagini recente » Cod sursa (job #1245584) | Cod sursa (job #2110759) | Cod sursa (job #2108885) | Cod sursa (job #248967) | Cod sursa (job #767575)
Cod sursa(job #767575)
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
#define ll long long
#define max(a, b) (a > b ? a : b)
typedef struct {
ll D;
ll Lana;
} cutzu;
ll N, X, L, mare;
cutzu v[100005];
priority_queue <ll> hp;
inline long long cmp (cutzu a, cutzu b) {
if (a.D == b.D) return (a.Lana > b.Lana);
return (a.D > b.D);
}
void Citire () {
ifstream fin ("lupu.in");
fin >> N >> X >> L;
for (long long i = 0; i < N; i++)
{
fin >> v[i].D >> v[i].Lana;
v[i].D = (X - v[i].D) / L;
mare = max (mare, v[i].D);
}
sort (v, v + N, cmp);
fin.close ();
}
long long Business () {
long long cnt = 0, j = 0;
for (long long i = mare; i >= 0; i--)
{
while (v[j].D == i) hp.push (v[j].Lana), j++;
if (!hp.empty ()) cnt += hp.top (), hp.pop ();
}
return cnt;
}
void Scriere () {
ofstream fout ("lupu.out");
fout << Business ();
fout.close ();
}
int main () {
Citire ();
Scriere ();
return 0;
}