293562026-06-09 14:06:12Kristof0306Rendőr **cpp17Részben helyes 40/1002ms1092 KiB
#include <bits/stdc++.h>
#include <climits>
using namespace std;

int main() {
	int n, a, ossz = 0; cin >> n;
	vector<int> inp;
	for (int i = 1; i <= n; i++) {
		cin >> a;
		for (int j = 0; j < a; j++) {
			inp.push_back(i);
			ossz++;
		}
	}
	vector<vector<int>> dp(ossz+1, vector<int>(n+1, 1000000000));
	for (int i = 0; i <= n; i++) {
		dp[0][i] = 0;
	}

	for (int y = 1; y <= ossz; y++) {
		for (int x = 1; x <= n; x++) {
			if ((dp[y-1][x-1]+abs(inp[y-1]-x)) > dp[y][x-1]) {
				dp[y][x] = dp[y][x-1];
			} else {
				dp[y][x] = (dp[y-1][x-1]+abs(inp[y-1]-x));
			}
		}
	}

	//TÁBLA
	/*
	for (vector<int> v : dp) {
		for (int i : v) {
			cout << i << " ";
		}
		cout << "\n";
	}
	*/
	cout << dp[ossz][n];
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/100
1Részben helyes2/61ms508 KiB
2Részben helyes2/61ms316 KiB
3Részben helyes2/61ms316 KiB
4Részben helyes2/61ms316 KiB
5Részben helyes2/61ms316 KiB
6Részben helyes3/71ms316 KiB
7Részben helyes3/71ms316 KiB
8Részben helyes3/71ms376 KiB
9Részben helyes3/72ms500 KiB
10Részben helyes3/72ms564 KiB
11Részben helyes3/71ms756 KiB
12Részben helyes3/72ms1004 KiB
13Részben helyes3/71ms820 KiB
14Részben helyes3/72ms1048 KiB
15Részben helyes3/72ms1092 KiB