133132025-01-07 13:47:35lacitoZebra (75 pont)cpp17Hibás válasz 0/752ms548 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n; cin >> n;
	vector<int> a = {0}, b = {0};
	vector<int> dir(n);
	for (int i = 0; i < n; i++) {
		cin >> dir[i];
	}
	
	for (int i = 0; i < n; i++) {
		int x; cin >> x;
		((dir[i] == 0) ? a : b).push_back(x);
	}

	sort(a.begin(), a.end());
	sort(b.begin(), b.end());

	n = a.size() - 1;
	int m = b.size() - 1;
	vector<vector<int>> dp(n + 1, vector<int>(m + 1, 1e9));
	dp[0][0] = 0;

	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			int time = max(a[i], b[j]);
			int awaiting = 0;
			for (int x = 0; x < i; x++) { // x ember megy meg vele
				awaiting += time - a[i - x];
				int bwaiting = 0;
				for (int y = 1; y < j; y++) { // y ember megy meg vele
					bwaiting += time - b[j - y];
					dp[i][j] = min(dp[i][j], dp[i - x - 1][j - y - 1] + awaiting + bwaiting);
				}
			}
			// cout << dp[i][j] << " ";
		}
		// cout << "\n";
	}
	cout << dp[n][m];
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/75
1Elfogadva0/01ms316 KiB
2Hibás válasz0/02ms500 KiB
3Hibás válasz0/51ms508 KiB
4Hibás válasz0/51ms316 KiB
5Hibás válasz0/51ms512 KiB
6Hibás válasz0/52ms316 KiB
7Hibás válasz0/52ms508 KiB
8Hibás válasz0/52ms316 KiB
9Hibás válasz0/52ms548 KiB
10Hibás válasz0/52ms316 KiB
11Hibás válasz0/52ms316 KiB
12Hibás válasz0/52ms316 KiB
13Hibás válasz0/52ms416 KiB
14Hibás válasz0/52ms316 KiB
15Hibás válasz0/52ms404 KiB
16Hibás válasz0/52ms508 KiB
17Hibás válasz0/52ms316 KiB