Cod sursa(job #1258568)

Utilizator cioionutFMI Ionut Ciocoiu cioionut Data 9 noiembrie 2014 00:37:01
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<map>
#include<queue>
using namespace std;
int main(){
	ifstream f("lupu.in");
	ofstream g("lupu.out");
	vector <int> t[100001];
	vector <int> oi(100001, 0);
	priority_queue <int> q;
	int n,x,l,i=0;
	f >> n >> x >> l;
	int max = 0;
	for (i = 0; i <n; i++){
		int a, b;
		f >> a >> b;
		int timp = (x - a) / l;
		if (timp >= 0) t[timp].push_back(i);
		oi[i] = b;
		if (timp>max) max = timp;
	}
	long long lupu = 0;
	for (i = max; i >= 0; i--){
		for (int j = 0; j < t[i].size(); j++)
			q.push(oi[t[i][j]]);
		if (!q.empty()){
			lupu += q.top();
			q.pop();
		}
	}
	g << lupu;
	g.close();
	f.close();
	//cin.get();
	return 0;
}