Cod sursa(job #2276910)

Utilizator marcudanfDaniel Marcu marcudanf Data 5 noiembrie 2018 16:29:55
Problema Lupul Urias si Rau Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
#include <vector>

const int NMAX = 1e5 + 5;

using namespace std;

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

priority_queue < int > heap;
pair < int, int > oi[NMAX];

int n, x, l, c;
uint64_t s;

int main(){
	fin >> n >> x >> l;
	for(int i = 0; i < n; i++){
		fin >> oi[i].first >> oi[i].second;
		oi[i].first = (x - oi[i].first) / l;
	}
	fin.close();
	sort(oi, oi + n);
	int ture = x / l;
	n--;
	while(ture >= 0){
		while(n >= 0 and oi[n].first >= ture){
			heap.push(oi[n].second);
			n--;
		}
		if(!heap.empty()){
			s += heap.top();
			heap.pop();
		}
		ture--;
	}
	fout << s << '\n';
	fout.close();
	return 0;
}