34532023-02-28 09:42:57AncsaSzemetessorcpp11Elfogadva 100/100284ms31748 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1808 KiB
2Elfogadva3ms2060 KiB
subtask217/17
3Elfogadva3ms2312 KiB
4Elfogadva3ms2512 KiB
5Elfogadva3ms2596 KiB
6Elfogadva3ms2812 KiB
7Elfogadva3ms2980 KiB
8Elfogadva3ms3192 KiB
9Elfogadva3ms3404 KiB
10Elfogadva3ms3512 KiB
11Elfogadva3ms3516 KiB
subtask325/25
12Elfogadva123ms8084 KiB
13Elfogadva123ms8140 KiB
14Elfogadva136ms8320 KiB
15Elfogadva143ms8632 KiB
16Elfogadva157ms9780 KiB
17Elfogadva216ms19788 KiB
18Elfogadva284ms31620 KiB
19Elfogadva284ms31620 KiB
20Elfogadva284ms31748 KiB
subtask420/20
21Elfogadva128ms7844 KiB
22Elfogadva153ms12828 KiB
23Elfogadva128ms8364 KiB
24Elfogadva152ms10420 KiB
25Elfogadva136ms8336 KiB
26Elfogadva208ms18416 KiB
27Elfogadva270ms26740 KiB
28Elfogadva270ms27360 KiB
29Elfogadva270ms26988 KiB
30Elfogadva237ms26944 KiB
subtask538/38
31Elfogadva3ms4348 KiB
32Elfogadva3ms4428 KiB
33Elfogadva3ms4552 KiB
34Elfogadva3ms4572 KiB
35Elfogadva14ms5380 KiB
36Elfogadva143ms9440 KiB
37Elfogadva266ms23624 KiB
38Elfogadva263ms23680 KiB
39Elfogadva273ms24772 KiB
40Elfogadva275ms26996 KiB
41Elfogadva279ms28256 KiB
42Elfogadva277ms27160 KiB