Cod sursa(job #602131)

Utilizator SmarandaMaria Pandele Smaranda Data 9 iulie 2011 12:03:03
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
long long n,x,l;
struct LUP
{
	long long d;
	long long a;
};
vector <LUP> z;
priority_queue <long long> h;
inline bool cmp (LUP v , LUP w)
{
	return v.d<w.d;
}

void read ()
{
	long long i;
	LUP temp;
	scanf("%lld%lld%lld",&n,&x,&l);
	for (i=1;i<=n;i++)
	{
		scanf("%lld%lld",&temp.d,&temp.a);
		z.push_back(temp);
	}
	sort(z.begin(),z.end(),cmp);
}

void rez()
{
	long long dist;
	long long  s=0;
	vector <LUP> :: iterator it;
	LUP k;
	for (dist=0,it=z.begin();it!=z.end() && dist<=x;dist+=l)
	{
		for (;it!=z.end();++it)
		{
			k=*it;
			if (k.d>dist)
				break;
			else
				h.push(k.a);
		}
		if (!h.empty())
		{
			s=s+h.top();
			h.pop();
		}
	}
	printf("%lld",s);
}

int main()
{
	
	freopen("lupu.in","r",stdin);
	freopen("lupu.out","w",stdout);
	
	read();
	rez();
	return 0;
}