Cod sursa(job #1549016)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 11 decembrie 2015 20:19:04
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I Marime 1.03 kb
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>
#include <functional>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <bitset>
#include <stack>
#define MOD 1000000007
#define NMAX 100005
#define MMAX 100005
#define INF 100000000
#define mp make_pair

using namespace std;

FILE *fin = freopen("lupu.in", "r", stdin);
FILE *fout = freopen("lupu.out", "w", stdout);

typedef pair<int, int> pii;
vector<pii> v(NMAX);

int main() {
	int n, i, j, x, l, d, a;
	long long s, nr;

	scanf("%d%d%d", &n, &x, &l);

	for (i = 0; i < n; ++i) {
		scanf("%d%d", &d, &a);
		v[i].first = d;
		v[i].second = a;
	}
	sort(v.begin(), v.begin()+n);

	j = 0;
	s = 0;
	priority_queue<int> pq;
	for (i = 0; i <= x; i += l) {
		while (v[j].first <= i && j < n) {
			pq.push(v[j].second);
			++j;
		}

		if (!pq.empty()) {
			nr = pq.top();
			s += nr;
			pq.pop();
		}
	}

	printf("%lld", s);

	return 0;
}