3453 2023. 02. 28 09:42:57 Ancsa Szemetessor cpp11 Elfogadva 100/100 284ms 31748 KiB
// greedy_linear solution O(N+K)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <numeric>

/*
5 11
66 73 68 79 78
2 50
0 1
0 12
2 20
0 23
1 44
1 30
4 12
4 3
4 63
0 10

kimenet: 158
*/


using namespace std;

constexpr int INF = 1e9;

int N, K;
vector<int> C, T, Q;

int main() {
    cin >> N >> K;
    C.resize(N);
    for (auto &x : C)
		cin >> x;

    T.resize(K);
    Q.resize(K);
    for (int i = 0; i < K; i++)
        cin >> T[i] >> Q[i];

	/* for each bin, calculate the first moment you can empty */
	vector <vector<int>>empty_times(N);
	vector <int> bins(N, 0);
	long long ans = 0;

	for (int i = 0; i < K; ++i) {
		auto &idx = T[i];
		auto &qty = Q[i];

		if (bins[idx] == 0 || bins[idx] + qty > C[idx]) {
			/* add index to empty times */
			if (bins[idx] != 0) ans += C[idx] - bins[idx];
			empty_times[idx].push_back(i);
			bins[idx] = qty;
		} else {
			/* substitute the previous index */
			empty_times[idx].back() = i;
			bins[idx] += qty;
		}
	}

	/* add last index */
	for (int i = 0; i < N; ++i) {
		if (empty_times[i].size() > 0) {
			ans += C[i] - bins[i];
		}
	}

	cout << ans << endl;

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1808 KiB
2 Elfogadva 3ms 2060 KiB
subtask2 17/17
3 Elfogadva 3ms 2312 KiB
4 Elfogadva 3ms 2512 KiB
5 Elfogadva 3ms 2596 KiB
6 Elfogadva 3ms 2812 KiB
7 Elfogadva 3ms 2980 KiB
8 Elfogadva 3ms 3192 KiB
9 Elfogadva 3ms 3404 KiB
10 Elfogadva 3ms 3512 KiB
11 Elfogadva 3ms 3516 KiB
subtask3 25/25
12 Elfogadva 123ms 8084 KiB
13 Elfogadva 123ms 8140 KiB
14 Elfogadva 136ms 8320 KiB
15 Elfogadva 143ms 8632 KiB
16 Elfogadva 157ms 9780 KiB
17 Elfogadva 216ms 19788 KiB
18 Elfogadva 284ms 31620 KiB
19 Elfogadva 284ms 31620 KiB
20 Elfogadva 284ms 31748 KiB
subtask4 20/20
21 Elfogadva 128ms 7844 KiB
22 Elfogadva 153ms 12828 KiB
23 Elfogadva 128ms 8364 KiB
24 Elfogadva 152ms 10420 KiB
25 Elfogadva 136ms 8336 KiB
26 Elfogadva 208ms 18416 KiB
27 Elfogadva 270ms 26740 KiB
28 Elfogadva 270ms 27360 KiB
29 Elfogadva 270ms 26988 KiB
30 Elfogadva 237ms 26944 KiB
subtask5 38/38
31 Elfogadva 3ms 4348 KiB
32 Elfogadva 3ms 4428 KiB
33 Elfogadva 3ms 4552 KiB
34 Elfogadva 3ms 4572 KiB
35 Elfogadva 14ms 5380 KiB
36 Elfogadva 143ms 9440 KiB
37 Elfogadva 266ms 23624 KiB
38 Elfogadva 263ms 23680 KiB
39 Elfogadva 273ms 24772 KiB
40 Elfogadva 275ms 26996 KiB
41 Elfogadva 279ms 28256 KiB
42 Elfogadva 277ms 27160 KiB