Cod sursa(job #1414809)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 3 aprilie 2015 01:53:31
Problema Lupul Urias si Rau Scor 84
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

#define MAXN 100050

int N, X, L;
pair<int, int> A[MAXN];
priority_queue<int, vector<int>, greater<int> > S;

int main() {
	freopen("lupu.in", "r", stdin);
	freopen("lupu.out","w", stdout);
	
	scanf("%d %d %d", &N, &X, &L);
	for (int i = 0; i < N; i++) {
		scanf("%d %d", &A[i].first, &A[i].second);
	}
	
	sort(A, A + N);
	
	int i = N - 1;
	while (i >= 0) {
		if (A[i].first > X) {
			continue;
		}
		int d = (X - A[i].first) / L + 1;
		while (i >= 0 && (X - A[i].first) / L + 1 == d) {
			S.push(A[i].second);
			i--;
		}
		
		while (S.size() > d) {
			S.pop();
		}
	}
	
	long long ans = 0;
	while (!S.empty()) {
		ans += S.top();
		S.pop();
	}
	
	printf("%lld\n", ans);
	
	return 0;
}