Cod sursa(job #2776706)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 20 septembrie 2021 19:22:29
Problema Lupul Urias si Rau Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

ifstream cin("lupu.in");
ofstream cout("lupu.out");
const int INF = (1 << 30), NMAX(100005), VMAX(1000000);;
using ll = long long;
using PII = pair<int, int>;
int cat[NMAX], fr[NMAX];
int main()
{
    int n, x, l;
    cin >> n >> x >> l;
    vector<pair<int, int> > vec;
    for(int i = 1; i <= n; ++i){
		int d, c;
		cin >> d >> c;
		if(d <= x)
			vec.push_back({((x - d) / l) + 1, c});
	}
	sort(vec.begin(), vec.end(), greater<PII>());
	priority_queue<int> pq;
	ll rez = 0;
	int ind = 0;
	for(int i = vec[0].first; i >= 1; --i){
		while(ind < vec.size() && vec[ind].first == i)
			pq.push(vec[ind].second), ++ind;
		if(!pq.empty())
			rez += pq.top(), pq.pop();
	}
	cout << rez << '\n';
    return 0;
}