Pagini recente » Cod sursa (job #1285551) | Cod sursa (job #180824) | Cod sursa (job #889931) | Cod sursa (job #2073279) | Cod sursa (job #767570)
Cod sursa(job #767570)
#include <fstream>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
#define max(a, b) (a > b ? a : b)
typedef struct {
int D;
int Lana;
} cutzu;
ll N, X, L, mare;
cutzu v[100005];
priority_queue <ll> hp;
inline int 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 (int 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 ();
}
int Business () {
int cnt = 0, j = 0;
for (int i = mare; i >= 0; i--)
{
if (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;
}