254472026-02-20 10:07:46SzeredaiNatanaelÓvodacpp17Hibás válasz 6/50500ms6196 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int n, k;
	cin >> n >> k;
	vector<int> m(k + 1);
	for (int i = 1; i <= k; ++i) {
		cin >> m[i];
	}
	vector<int> s(n + 1), t(n + 1);
	for (int i = 1; i <= n; ++i) {
		cin >> s[i];
	}
	for (int i = 1; i <= n; ++i) {
		cin >> t[i];
	}

	vector<vector<int>> w(k + 1);
	for (int i = 1; i <= n; ++i) {
		w[s[i]].push_back(i);
	}

	vector<int> a(n + 1);
	long long sum = 0;
	vector<int> u;

	for (int r = 1; r <= k; ++r) {
		auto& v = w[r];

		sort(v.begin(), v.end(), [&](int a, int b) {
			return t[a] < t[b];
			});

		if ((int)v.size() > m[r]) {
			int e = v.size() - m[r];
			for (int i = 0; i <= e; ++i) {
				u.push_back(v[i]);
			}
			for (int i = e; i <= (int)v.size(); ++i) {
				a[v[i]] = r;
			}
		}
		else{
			for (int x : v) {
				a[x] = r;
			}
		}
	}

	for (int r = 1; r <= k; ++r) {
		int c = 0;
		for (int i = 1; i <= n; ++i) {
			if (a[i] == r) {
				++c;
			}
		}

		if (c == 0) {
			int g = u.back();
			u.pop_back();
			a[g] = r;
			sum += t[g];
		}
	}

	for (int g : u) {
		for (int r = 1; r <= k; ++r) {
			int c = 0;
			for (int i = 1; i <= n; ++i) {
				if (a[i] == r) {
					++c;
				}
			}

			if (c < m[r]) {
				a[g] = r;
				sum += t[g];
				
				break;
			}
		}
	}

	cout << sum << "\n";
	for (int i = 1; i <= n; ++i) {
		cout << a[i] << " ";
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/50
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/08ms564 KiB
3Hibás válasz0/21ms508 KiB
4Hibás válasz0/21ms508 KiB
5Hibás válasz0/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Futási hiba0/21ms564 KiB
8Hibás válasz0/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Hibás válasz0/21ms316 KiB
11Elfogadva2/21ms380 KiB
12Hibás válasz0/21ms500 KiB
13Futási hiba0/22ms468 KiB
14Hibás válasz0/33ms316 KiB
15Időlimit túllépés0/3500ms820 KiB
16Időlimit túllépés0/3499ms1920 KiB
17Hibás válasz0/3116ms1588 KiB
18Futási hiba0/324ms3380 KiB
19Futási hiba0/320ms2100 KiB
20Időlimit túllépés0/3483ms2356 KiB
21Futási hiba0/328ms2936 KiB
22Futási hiba0/441ms6196 KiB