Cod sursa(job #2765809)

Utilizator DragosC1Dragos DragosC1 Data 29 iulie 2021 23:33:10
Problema Lupul Urias si Rau Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;

int n, X, L, lung;

struct oaie {
	int d, a;
};

oaie oi[100001];
pair<int, int> t[100001];

void read() {
	int i;
	ifstream f("lupu.in");
	f >> n >> X >> L;
	for (i = 1; i <= n; i++)
		f >> oi[i].d >> oi[i].a;
	f.close();
}

priority_queue<int> pq;

int ans;

void solve() {
	int i, x, a;
	for (i = 1; i <= n; i++) 
		if (oi[i].d <= X)
			t[++lung] = {(X - oi[i].d) / L + 1, oi[i].a};
	sort(t + 1, t + lung + 1);
	i = lung, a = n - 1;
	while (i >= 1) {
		while(i >= 1 && a == t[i].first)
			pq.push(t[i--].second);
		a--;
		if(!pq.empty()){
			ans += pq.top();
			pq.pop();
		}
	}
}

void output() {
	ofstream g("lupu.out");
	g << ans;
	g.close();
}

int main() {
	read();
	solve();
	output();
	return 0;
}