170722025-05-20 18:37:26algoproAutózáscpp17Wrong answer 0/100143ms7080 KiB
// UUID: e96125d3-be38-427d-846c-4dc074ddd606
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k;
	cin>>n>>k;
	vector<pair<int, int>> kut(n+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(0);
	int tav=0;
	vector<int> pref(n+1);
	for(int i=1;i<n;i++){
		pref[i+1]=pref[i]+kut[i].first;
	}
	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{
			kolt+=(pref[nex[i]]-pref[i]-mennyi)*kut[i].second;
			if(pref[nex[i]]-pref[i]-mennyi>0){
				valasz.push_back({i, pref[nex[i]]-pref[i]-mennyi});
			}			
			mennyi+=pref[nex[i]]-pref[i]-mennyi;
		}
		mennyi-=kut[i].first;
	}
}
SubtaskSumTestVerdictTimeMemory
base0/100
1Wrong answer0/01ms528 KiB
2Wrong answer0/0140ms7080 KiB
3Wrong answer0/51ms316 KiB
4Wrong answer0/51ms316 KiB
5Wrong answer0/51ms316 KiB
6Wrong answer0/51ms316 KiB
7Wrong answer0/51ms332 KiB
8Wrong answer0/51ms316 KiB
9Wrong answer0/51ms316 KiB
10Wrong answer0/51ms316 KiB
11Wrong answer0/528ms1652 KiB
12Wrong answer0/545ms2480 KiB
13Wrong answer0/541ms2272 KiB
14Wrong answer0/582ms4260 KiB
15Runtime error0/587ms3124 KiB
16Runtime error0/585ms3124 KiB
17Runtime error0/586ms3100 KiB
18Runtime error0/581ms3020 KiB
19Runtime error0/5129ms4660 KiB
20Runtime error0/5135ms4648 KiB
21Runtime error0/5137ms4916 KiB
22Runtime error0/5143ms5060 KiB