243592026-02-10 10:08:34SzeredaiNatanaelÓvodacpp17Hibás válasz 16/50101ms2868 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	int k, n; cin >> k >> n;
	vector<int> maxi(n + 1, 0);
	for (int i = 1; i <= n; ++i) {
		cin >> maxi[i];
	}
	vector<int> szerep(k + 1);
	vector<int> ans(k + 1, 0);
	for (int i = 1; i <= k; ++i) {
		cin >> szerep[i];
	}
	vector<pair<int, int>> siras(k + 1);
	for (int i = 1; i <= k; ++i) {
		cin >> siras[i].first;
		siras[i].second = i;
	}

	int t = 0;
	sort(siras.begin(), siras.end());
	for (int i = k; i >= 1; --i) {
		int j = szerep[siras[i].second];
		if (maxi[j] > 0) {
			--maxi[j];
			ans[siras[i].second] = j;
		}
		else t += siras[i].first;
	}

	cout << t << "\n";
	for(int i = 1; i <= k; ++i) {
		cout << ans[i] << " ";
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base16/50
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/04ms316 KiB
3Részben helyes1/21ms316 KiB
4Részben helyes1/21ms316 KiB
5Részben helyes1/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Részben helyes1/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Részben helyes1/21ms380 KiB
11Részben helyes1/21ms316 KiB
12Részben helyes1/21ms508 KiB
13Hibás válasz0/22ms524 KiB
14Részben helyes1/31ms316 KiB
15Hibás válasz0/310ms624 KiB
16Hibás válasz0/326ms948 KiB
17Részben helyes1/337ms1152 KiB
18Hibás válasz0/359ms1840 KiB
19Részben helyes1/368ms2104 KiB
20Részben helyes1/375ms2100 KiB
21Részben helyes1/386ms2348 KiB
22Hibás válasz0/4101ms2868 KiB