170802025-05-20 18:44:57algoproAutózáscpp17Időlimit túllépés 80/100216ms8108 KiB
// UUID: 709ef1a0-7a93-4e93-9841-83d268772ff3
#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	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({-1, 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
base80/100
1Elfogadva0/01ms316 KiB
2Elfogadva0/057ms6304 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms316 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/51ms316 KiB
8Elfogadva5/51ms316 KiB
9Elfogadva5/51ms316 KiB
10Elfogadva5/51ms500 KiB
11Elfogadva5/521ms1588 KiB
12Elfogadva5/532ms2484 KiB
13Elfogadva5/517ms2100 KiB
14Elfogadva5/535ms3892 KiB
15Elfogadva5/5143ms5036 KiB
16Elfogadva5/5136ms4828 KiB
17Elfogadva5/5136ms5088 KiB
18Elfogadva5/5118ms4788 KiB
19Időlimit túllépés0/5216ms7384 KiB
20Időlimit túllépés0/5207ms7568 KiB
21Időlimit túllépés0/5212ms7780 KiB
22Időlimit túllépés0/5209ms8108 KiB