170812025-05-20 18:56:14algoproAutózáscpp17Elfogadva 100/100168ms6824 KiB
// UUID: c5bd4112-a51f-4424-aa70-39ec0f381616
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k;
	cin>>n>>k;
	vector<pair<int, int>> kut(n+2, {-1, -1});
	for(int i=1;i<=n;i++){
		cin>>kut[i].first>>kut[i].second;
	}
	stack<int> mini;
	vector<int> nex(n+1);
	mini.push(n+1);
	int tav=0;
	vector<int> pref(n+2);
	for(int i=1;i<=n;i++){
		pref[i+1]=pref[i]+kut[i].first;
		//cout<<pref[i ]<<' ';
	}
	for(int i=n;i>0;i--){
		while(kut[mini.top()].second>=kut[i].second){
			mini.pop();
		}
		if(pref[mini.top()]-pref[i]>k)nex[i]=-1;
		else nex[i]=mini.top();
		mini.push(i);
	}
	vector<pair<int, int>> valasz;
	int mennyi=0, kolt=0;
	for(int i=1;i<=n;i++){
		if(nex[i]==-1){
			kolt+=(k-mennyi)*kut[i].second;
			valasz.push_back({i, k-mennyi});
			mennyi=k;
		}
		else{

			if(pref[nex[i]]-pref[i]-mennyi>0){
				kolt+=(pref[nex[i]]-pref[i]-mennyi)*kut[i].second;
				valasz.push_back({i, pref[nex[i]]-pref[i]-mennyi});
				mennyi+=pref[nex[i]]-pref[i]-mennyi;
			}			
		}
		//cout <<i<<' ' <<kut[i].first<<' '<<mennyi<<'\n';
		mennyi-=kut[i].first;
		//cout <<i<<' ' <<kut[i].first<<' '<<mennyi<<'\n';
	}
	cout<<kolt<<' '<<valasz.size()<<'\n';
	for(int i=0;i<valasz.size();i++){
		cout<<valasz[i].first<<' '<<valasz[i].second<<'\n';
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva0/01ms512 KiB
2Elfogadva0/0140ms5064 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms316 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/51ms316 KiB
8Elfogadva5/51ms316 KiB
9Elfogadva5/51ms404 KiB
10Elfogadva5/51ms316 KiB
11Elfogadva5/529ms1332 KiB
12Elfogadva5/546ms2068 KiB
13Elfogadva5/543ms1848 KiB
14Elfogadva5/585ms3120 KiB
15Elfogadva5/5108ms4272 KiB
16Elfogadva5/597ms4208 KiB
17Elfogadva5/5101ms4260 KiB
18Elfogadva5/596ms4164 KiB
19Elfogadva5/5151ms6312 KiB
20Elfogadva5/5158ms6556 KiB
21Elfogadva5/5164ms6568 KiB
22Elfogadva5/5168ms6824 KiB