Cod sursa(job #3238666)

Utilizator Dani111Gheorghe Daniel Dani111 Data 28 iulie 2024 17:00:21
Problema Lupul Urias si Rau Scor 16
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
using namespace std;

const int MAX = 3 * 1e5;
int N, X, L;
pair<int, int>A[MAX + 3];


int main() {
	freopen("lupu.in", "r", stdin);
	freopen("lupu.out", "w", stdout);

	cin >> N >> X >> L;

	for(int i = 1; i <= N; i++) {
		cin >> A[i].first >> A[i].second;
	}

	sort(A + 1, A + N + 1);

	int i = N;
	while(A[i].first > X && i != 0) i--;
	long long ans = 0;
	priority_queue<int>pq;
	for(; i >= 1;) {
		
		while(i >= 1 && A[i].first > X - L) {
			pq.push(A[i].second);
			i--;
		}
		if(!pq.empty()) 
		{
			ans += pq.top();
			X -= L;
			while(!pq.empty()) pq.pop();
		}
		else {
			pq.push(A[i].second);
			i--;

		}
	}
	cout << ans;

}