238362026-01-30 16:04:43zsomborZebra (75 pont)cpp17Elfogadva 75/751ms560 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int n, x, y;
vector <int> o(100);
vector <int> a(1, 0);
vector <int> b(1, 0);
vector <vector <int>> dp(100, vector <int>(100, 1e9));

int main() {
	cin >> n;
	for (int i = 0; i < n; i++) cin >> o[i];
	for (int i = 0; i < n; i++) {
		cin >> x;
		(o[i] ? a.push_back(x) : b.push_back(x));
	}
	x = a.size() - 1;
	y = b.size() - 1;
	sort(a.begin(), a.end());
	sort(b.begin(), b.end());
	dp[0][0] = 0;
	for (int i = 1; i <= x; i++) {
		for (int j = 1; j <= y; j++) {
			int t = max(a[i], b[j]);
			int w = t - b[j];
			for (int k = i; k >= 1; k--) {
				w += t - a[k];
				dp[i][j] = min(dp[i][j], dp[k - 1][j - 1] + w);
			}
			w = t - a[i];
			for (int k = j; k >= 1; k--) {
				w += t - b[k];
				dp[i][j] = min(dp[i][j], dp[i - 1][k - 1] + w);
			}
		}
	}
	cout << dp[x][y];
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base75/75
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms316 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/51ms560 KiB
8Elfogadva5/51ms316 KiB
9Elfogadva5/51ms444 KiB
10Elfogadva5/51ms316 KiB
11Elfogadva5/51ms316 KiB
12Elfogadva5/51ms316 KiB
13Elfogadva5/51ms316 KiB
14Elfogadva5/51ms316 KiB
15Elfogadva5/51ms380 KiB
16Elfogadva5/51ms316 KiB
17Elfogadva5/51ms316 KiB