Cod sursa(job #2286855)

Utilizator flibiaVisanu Cristian flibia Data 20 noiembrie 2018 21:36:26
Problema Lupul Urias si Rau Scor 48
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second

using namespace std;

ifstream in("lupu.in");
ofstream out("lupu.out");

int n, vf;
ll x, l, ans, add, a, b;
unordered_map <ll, bool> mp;
pair <ll, ll> st[100100];

int main() {
	in >> n >> x >> l;
	for (int i = 1; i <= n; i++) {
		in >> a >> b;
		ll can = (x - a) / l;
		if (can >= 0)
			st[++vf] = {-b, can};
	}
	sort(st + 1, st + vf + 1);
	for (int i = 1; i <= vf; i++) {
		for (int j = st[i].se; j >= 0; j--)
			if (mp.count(j) == 0) {
				ans -= st[i].fi;
				mp[j] = 1;
				break;
			}
	}
	out << ans;
	return 0;
}