170882025-05-22 14:27:30algoproAutózáscpp17Accepted 100/100192ms11480 KiB
// UUID: 250b3da0-7c87-46d8-b1c2-39e54b29ad21
#include <bits/stdc++.h>
using namespace std;

#

int main() {
	long long n, k;
	cin >> n >> k;

	long long pos = 0;
	vector<pair<long long, long long> > sor(n);
	deque<pair<pair<long long, long long>, int> > dq;
	vector<pair<pair<long long, long long>, int> > mo;
	for (pair<long long, long long> & x : sor) {
		cin >> x.first >> x.second;
	}
	sor.push_back({0, 0});
	for (int i = 0; i <= n; i++){
		pos += sor[i].first;
		while(dq.size() > 1 && dq.back().first.second >= sor[i].second){
			dq.pop_back();
		}
		dq.push_back({{pos - sor[i].first, sor[i].second}, i});
		if (dq.size() == 2 && dq[0].first.second >= dq[1].first.second){
			mo.push_back(dq[0]);
			dq.pop_front();
		}
		while (dq[0].first.first + k < pos){
			mo.push_back(dq[0]);
			dq.pop_front();
		}
	}
	mo.push_back(dq.back());

	long long curTank = 0, total_cost = 0;
	vector<pair<int, int> > outPut(mo.size() - 1);
	for (int i = 0; i < mo.size() - 1; i++){
		if (mo[i].first.second > mo[i + 1].first.second){
			total_cost += (mo[i + 1].first.first - mo[i].first.first - curTank) * mo[i].first.second;
			outPut[i] = {mo[i].second, mo[i + 1].first.first - mo[i].first.first - curTank};
			curTank = 0;
		}
		else {
			total_cost += (k - curTank) * mo[i].first.second;
			outPut[i] = {mo[i].second, (k - curTank)};
			curTank = k - (mo[i + 1].first.first - mo[i].first.first);
		}
	}

	cout << total_cost << " " << mo.size() - 1 << '\n';
	for (pair<int, int> x : outPut) cout << x.first + 1 << " " << x.second << '\n';
}
SubtaskSumTestVerdictTimeMemory
base100/100
1Accepted0/01ms316 KiB
2Accepted0/0144ms9780 KiB
3Accepted5/51ms316 KiB
4Accepted5/51ms388 KiB
5Accepted5/51ms316 KiB
6Accepted5/51ms316 KiB
7Accepted5/51ms316 KiB
8Accepted5/51ms376 KiB
9Accepted5/51ms316 KiB
10Accepted5/51ms316 KiB
11Accepted5/530ms2120 KiB
12Accepted5/548ms3124 KiB
13Accepted5/543ms3128 KiB
14Accepted5/587ms5940 KiB
15Accepted5/5112ms8436 KiB
16Accepted5/5112ms6528 KiB
17Accepted5/5109ms6720 KiB
18Accepted5/5103ms6360 KiB
19Accepted5/5165ms10668 KiB
20Accepted5/5168ms11024 KiB
21Accepted5/5177ms11152 KiB
22Accepted5/5192ms11480 KiB