163482025-04-28 18:15:56algoproJancsi és Juliska kitalálós játékacpp17Wrong answer 0/100922ms1844 KiB
// UUID: d7917306-b8a2-4e40-b0b0-d48dcf36985d
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
	cin >> n;
	vector<vector<int>> dp(n, vector<int>(n, INT_MAX / 2));
	vector<vector<int>> cost(n, vector<int>(n));
	for (int i = 0; i < n; i++)
	{
		cin >> cost[i][i];
	}
	for	(int i = 0; i < n; i++)
	{
		for (int j = i+1; j < n; j++)
		{
			cost[i][j] = max(cost[i][j-1], cost[j][j]);
		}
	}

	for(int h = 0; h < n; h++){
		for(int i = 0; i + h < n; i++){
			int j = i + h;
			if(h == 0){
				dp[i][i] = 0;
				continue;
			}
			if(h == 1){
				dp[i][i + 1] = min(cost[i][i], cost[i + 1][i + 1]);
				continue;
			}
			for(int l = i; l <= j; l++){
				for(int r = l; r <= j; r++){
					dp[i][j] = min(dp[i][j], max(dp[i][max(l - 1, i)], max(dp[l][r], dp[min(r + 1, j)][j])) + cost[l][r]);
				}
			}
		}
	}

	for	(int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << dp[i][j] << " ";
		}
		cout << "\n";
	}

	cout << dp[0][n - 1];
}
SubtaskSumTestVerdictTimeMemory
base0/100
1Wrong answer0/01ms508 KiB
2Wrong answer0/0922ms1636 KiB
3Wrong answer0/41ms316 KiB
4Wrong answer0/51ms316 KiB
5Wrong answer0/51ms316 KiB
6Wrong answer0/51ms316 KiB
7Wrong answer0/514ms480 KiB
8Wrong answer0/514ms564 KiB
9Wrong answer0/535ms564 KiB
10Wrong answer0/548ms560 KiB
11Wrong answer0/561ms584 KiB
12Wrong answer0/5123ms920 KiB
13Wrong answer0/5166ms948 KiB
14Wrong answer0/5185ms976 KiB
15Wrong answer0/5439ms1332 KiB
16Wrong answer0/5515ms1464 KiB
17Wrong answer0/5606ms1332 KiB
18Wrong answer0/5688ms1552 KiB
19Wrong answer0/5791ms1588 KiB
20Wrong answer0/5922ms1844 KiB
21Wrong answer0/5921ms1640 KiB
22Wrong answer0/6922ms1844 KiB