Cod sursa(job #1794593)

Utilizator MickeyTurcu Gabriel Mickey Data 1 noiembrie 2016 15:30:44
Problema Lupul Urias si Rau Scor 88
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<fstream>
#include<string.h>
#include<ctype.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<unordered_map>
#include<array>
#include<deque>
#include<queue>
#include<math.h>
#include<functional>
#include<unordered_set>
#include<set>
#include<iomanip>
#include<bitset>
using namespace std;
int n,i,j,k,el,nr,ok,x,l,lana,dist,distmax;
long long rez;
multimap<int, int,greater<int>>oi;
multimap<int, int,greater<int>>::iterator it;
priority_queue<int>prque;
int main()
{
	//ifstream f("file.in");
	//ofstream g("file.out");
	ifstream f("lupu.in");
	ofstream g("lupu.out");
	f >> n >> x >> l;
	for (i = 1; i <= n; i++)
	{
		f >> dist >> lana;
		if (dist <= x)
		{
			dist = (x - dist) / l + 1;
			oi.insert(make_pair(dist, lana));
			distmax = max(dist, distmax);
		}
	}
	it = oi.begin(); 
	dist = it->first;
	while (dist)
	{
		prque.push(it->second);
		x = it->first;
		it++;
		while (it != oi.end() && x == it->first)
		{
			prque.push(it->second);
			it++;
		}
		rez += (long long)prque.top();
		prque.pop();
		dist--;
	}
	g << rez;
	return 0;
}