164772025-05-02 17:19:33algoproAutózáscpp17Elfogadva 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";
	
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva0/01ms316 KiB
2Elfogadva0/0144ms6204 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms316 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/51ms316 KiB
8Elfogadva5/51ms316 KiB
9Elfogadva5/51ms316 KiB
10Elfogadva5/51ms508 KiB
11Elfogadva5/530ms1548 KiB
12Elfogadva5/548ms2448 KiB
13Elfogadva5/543ms2316 KiB
14Elfogadva5/586ms3916 KiB
15Elfogadva5/5112ms5424 KiB
16Elfogadva5/5104ms5148 KiB
17Elfogadva5/5107ms5452 KiB
18Elfogadva5/5101ms5120 KiB
19Elfogadva5/5162ms8260 KiB
20Elfogadva5/5168ms8380 KiB
21Elfogadva5/5174ms8808 KiB
22Elfogadva5/5179ms9068 KiB