Cod sursa(job #463599)

Utilizator mathboyDragos-Alin Rotaru mathboy Data 16 iunie 2010 16:22:19
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#include <queue>
#include <algorithm>

#define maxN 100005
using namespace std;

struct str {int d, c;};
str A[maxN];
long long sol;
int N, X, L, dist, i;
priority_queue <int> H;
inline bool cmp (const str &a, const str &b)
{
	if (a.d < b.d) return 1;
	return 0;
}
int main ()
{
	freopen ("lupu.in", "r", stdin);
	freopen ("lupu.out", "w", stdout);
	scanf ("%d%d%d\n", &N, &X, &L);
	for (i = 1; i <= N; i++)
		scanf ("%d%d\n", &A[i].d, &A[i].c);
	sort (A + 1, A + N + 1, cmp);
	for (dist = 0, i = 1; dist <= X && i <= N; dist += L)
	{
		for (; i <= N && A[i].d <= dist; i++)
			H.push (A[i].c);
		if (H.size ())
		{
			sol += H.top ();
			H.pop ();
		}
	}
	printf ("%lld\n", sol);
	return 0;
}