171952025-06-02 07:15:50algoproAutózáscpp17Accepted 100/100125ms8500 KiB
// UUID: 230123d3-a197-42c0-962c-cd7d56236023
#include <bits/stdc++.h>
using namespace std;

int main() {

    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int n, k; cin >> n >> k;
    vector<pair<int, int>> a(n); // kov, ar
    for (int i = 0; i < n; i++) {
        cin >> a[i].first >> a[i].second;
    }

    deque<array<int, 3>> q; // ar, maradek, i
    map<int, int> m;
    int cnt = 0;
    for (int i = 0; i < n; i++) {
        int marad = (i - 1 >= 0) ? a[i-1].first : k;
        while (!q.empty() && q.back()[0] > a[i].second) {
            marad += q.back()[1];
            q.pop_back();
        }
        if (marad) q.push_back({a[i].second, marad, i+1});
        int ledolgozando = a[i].first;
        while (!q.empty() && ledolgozando > 0) {
            int meg = min(ledolgozando, q.front()[1]);
            cnt += meg * q.front()[0];
            m[q.front()[2]] += meg;
            ledolgozando -= meg;
            q.front()[1] -= meg;
            if (q.front()[1] == 0) q.pop_front();
        }
    }

    cout << cnt << " " << m.size() << "\n";
    for (auto [x, y] : m) {
        cout << x << " " << y << "\n";
    }
	
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base100/100
1Accepted0/01ms316 KiB
2Accepted0/061ms2612 KiB
3Accepted5/51ms508 KiB
4Accepted5/51ms316 KiB
5Accepted5/51ms316 KiB
6Accepted5/51ms500 KiB
7Accepted5/51ms316 KiB
8Accepted5/51ms316 KiB
9Accepted5/51ms316 KiB
10Accepted5/51ms316 KiB
11Accepted5/516ms1176 KiB
12Accepted5/527ms1664 KiB
13Accepted5/518ms1076 KiB
14Accepted5/537ms2000 KiB
15Accepted5/575ms5432 KiB
16Accepted5/570ms5136 KiB
17Accepted5/575ms5164 KiB
18Accepted5/568ms4912 KiB
19Accepted5/5109ms7732 KiB
20Accepted5/5118ms8076 KiB
21Accepted5/5120ms8084 KiB
22Accepted5/5125ms8500 KiB