Cod sursa(job #1794890)

Utilizator ArkinyStoica Alex Arkiny Data 1 noiembrie 2016 20:07:05
Problema Lupul Urias si Rau Scor 28
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
#include<queue>
using namespace std;

struct comparator
{
	bool operator()(const pair<long long, long long> &p1, const pair<long long, long long> &p2)
	{
		if(p1.first > p2.first)
			return 1;
		else if (p1.first == p2.first)
		{
			return p1.second < p2.second;
		}
		else
			return 0;
	}
};

priority_queue<pair<long long, long long>, vector<pair<long long, long long>>, comparator> PQ;

ifstream in("lupu.in");
ofstream out("lupu.out");

int main()
{

	long long N, X, L;

	in >> N >> X >> L;

	for (long long i = 1;i <= N;++i)
	{
		long long a, b;

		in >> a >> b;
		if(a<=X)
			PQ.push(make_pair((X - a) / L,b));
	}
	long long s = 0;
	long long j = 0;
	while (PQ.size())
	{
		pair<long long, long long> e = PQ.top();

		if (e.first >= j)
			s += e.second,++j;

		PQ.pop();
	}

	out << s;

	return 0;
}