Cod sursa(job #480715)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 29 august 2010 12:59:40
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <cstdio>
#include <queue>
#include <algorithm>

using namespace std;

#define file_in "lupu.in"
#define file_out "lupu.out"

#define ll long long 
#define x first
#define y second
#define nmax 101000

pair<ll,ll> p[nmax];
priority_queue<ll> H; 
ll n,i,d,l,w,sol=0,j;

void adfile(void){
	
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%lld %lld %lld", &n,&d, &l);
	for (i=1;i<=n;++i)
		 scanf("%lld %lld", &p[i].x, &p[i].y);
	
	fclose(stdin);
	
	return ;
	
}

int cmp(pair<ll,ll> a, pair<ll,ll> b){
	
	return a.x<b.x;
}
	
void solve(void){

	sort(p+1,p+n+1,cmp);
	
	i=1;
	
	for (w=0;w<=d && i<=n;w+=l)
	{
		for (j=i;j<=n && p[j].x<=w;++j)
	         H.push(p[j].y);
		i=j;
		if (!H.empty())
		{
			sol+=H.top();
			H.pop();
		}
	}
	
	printf("%lld\n", sol);
}

int main(){
	
	adfile();
	solve();
	
	return 0;
	
}