164772025-05-02 17:19:33algoproAutózáscpp17Accepted 100/100179ms9068 KiB
// UUID: 5160fbd5-cbb2-4b04-97f3-89367451dd9f
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n , k;cin >> n >> k;
	vector<int> a , b;
	for(int i = 0; i < n; i++){
		int c , d; cin >> c >> d;
		a.push_back(c);
		b.push_back(d);
	}
	b.push_back(-1);
	vector<int> c(n+1 , 0);
	vector<int> d(n+1 , 0);
	stack<int> s;s.push(n);
	for(int i = n-1; i >= 0; i--){
		while(b[s.top()] > b[i])s.pop();
		d[i] = s.top();
		s.push(i);
	}
	int j = 0 , h = 0;
	vector<int> ans(n , 0);
	int g = 0;
	for(int i = 0; i < n; i++){
		int o = a[i];
		while(o > 0){
			while(i >= d[j] || h == k){
				j++;
				h += c[j];
			}
			int p = min(o , k-h);
			c[i+1] -= p;
			g += p*b[j];
			ans[j] += p;
			h += p;
			o -= p;
		}
	}
	cout << g << " ";
	vector<array<int , 2>> an;
	for(int i = 0; i < n; i++){
		if(ans[i] > 0){
			an.push_back({i+1 , ans[i]});
		}
	}
	cout << an.size() << endl;
	for(auto x : an) cout << x[0] << " " << x[1] << "\n";
	
}
SubtaskSumTestVerdictTimeMemory
base100/100
1Accepted0/01ms316 KiB
2Accepted0/0144ms6204 KiB
3Accepted5/51ms316 KiB
4Accepted5/51ms316 KiB
5Accepted5/51ms316 KiB
6Accepted5/51ms316 KiB
7Accepted5/51ms316 KiB
8Accepted5/51ms316 KiB
9Accepted5/51ms316 KiB
10Accepted5/51ms508 KiB
11Accepted5/530ms1548 KiB
12Accepted5/548ms2448 KiB
13Accepted5/543ms2316 KiB
14Accepted5/586ms3916 KiB
15Accepted5/5112ms5424 KiB
16Accepted5/5104ms5148 KiB
17Accepted5/5107ms5452 KiB
18Accepted5/5101ms5120 KiB
19Accepted5/5162ms8260 KiB
20Accepted5/5168ms8380 KiB
21Accepted5/5174ms8808 KiB
22Accepted5/5179ms9068 KiB