Cod sursa(job #2145252)

Utilizator brczBereczki Norbert Cristian brcz Data 27 februarie 2018 11:01:30
Problema Lupul Urias si Rau Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<bits/stdc++.h>

using namespace std;

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

#define cin fin
#define cout fout
#define int long long

priority_queue<int,vector<int>,greater<int>> H;
vector<pair<int,int> > V;
int n,D,L;

signed main() {

	cin >> n >> D >> L;

	V.resize(n);
	for(int i=0;i<n;++i) {
		cin >> V[i].first >> V[i].second;
	}
	sort(V.begin(),V.end());

	for(int i = n-1;i>=0;--i) {
		if(V[i].first > D) continue;
		int sz = (D - V[i].first) / L + 1;
		if(sz > H.size()) H.push(V[i].second);
		else if(H.top() < V[i].second) {
			H.pop();
			H.push(V[i].second);
		}
	}

	int sum = 0;
	while(!H.empty()) {
		sum += H.top();
		H.pop();
	}
	cout << sum << '\n';

	return 0;
}