170752025-05-20 18:41:29algoproAutózáscpp17Futási hiba 60/100148ms6380 KiB
// UUID: db1d87cc-42b7-4a53-a78f-b08c78aad3a8
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k;	cin>>n>>k;
	vector<pair<int, int>> a (n);
	vector<int> ne (n);
	vector<long long> dist(n+1);
	for(int i=0; i<n; i++){
		int x, y; cin>>x>>y;
		a[i]={y, x};
		dist[i+1]=dist[i]+a[i].second;
	}

	stack<pair<int, int>> s;
	s.push({0, n});
	for(int i=n-1; i>=0; i--){
		while(s.top().first>=a[i].first){
			s.pop();
		}
		ne[i]=s.top().second;
		s.push({a[i].first, i});
	}

	vector<pair<int, int>> ans;
	long long p=0, t=0;

	for(int i=0; i<n; i++){
		if(i!=0) {t-=a[i-1].second;}
		if(dist[ne[i]]-dist[i]<=k){
			if(dist[ne[i]]-dist[i] >t){
				ans.push_back({i+1, dist[ne[i]]-dist[i]-t});
				p+=(dist[ne[i]]-dist[i]-t)*a[i].first;
				t=dist[ne[i]]-dist[i];
			}
		}
		else{
			if(dist[n]-dist[i]<=k){
				if (t>= dist[n]-dist[i]){break;}
				ans.push_back({i+1, dist[n]-dist[i]-t});
				p+=dist[n]-dist[i]-t;
				break;
			}
			ans.push_back({i+1, k-t});
			p+=(k-t)*a[i].first;
			t=k;
		}
	}

	cout<<p<<" "<<ans.size()<<endl;
	for(auto i: ans){
		cout<<i.first<<" "<<i.second<<endl;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base60/100
1Elfogadva0/01ms316 KiB
2Elfogadva0/0142ms6284 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms548 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/51ms316 KiB
8Elfogadva5/51ms316 KiB
9Elfogadva5/51ms316 KiB
10Elfogadva5/51ms508 KiB
11Elfogadva5/539ms1584 KiB
12Elfogadva5/559ms2464 KiB
13Elfogadva5/543ms2212 KiB
14Elfogadva5/587ms3984 KiB
15Futási hiba0/593ms4004 KiB
16Futási hiba0/586ms3836 KiB
17Futási hiba0/590ms4084 KiB
18Futási hiba0/583ms3636 KiB
19Futási hiba0/5134ms5732 KiB
20Futási hiba0/5137ms5932 KiB
21Futási hiba0/5143ms5940 KiB
22Futási hiba0/5148ms6380 KiB