Cod sursa(job #3298202)

Utilizator Mihail_SebiastianPandrea Mihail-Sebiastian Mihail_Sebiastian Data 27 mai 2025 22:57:34
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>
#include <stdio.h>

long long d[501][501];
int v[501];
using namespace std;
int main() {
	int n;
	freopen("podm.in", "r", stdin);
	freopen("podm.out", "w", stdout);
	scanf("%d", &n);
	for (int i = 0; i <= n; i++) {
		scanf("%d", &v[i]);
	}

	for(int i = 0; i <= n; i++){
		for(int j = 0; j <= n; j++){
			d[i][j] = LLONG_MAX;
		}
	}
	for (int i = 1; i <= n; i++) {
		d[i][i] = 0;
		if (i < n)
			d[i][i + 1] = (long long)v[i - 1] * v[i] * v[i + 1];
	}

	for (int x = 2; x <= n; x++) {
		for (int i = 1; i <= n - x; i++) {
			for (int k = i; k < i + x; k++) {
				d[i][i + x] = min(d[i][i + x], d[i][k] + d[k + 1][i + x] + (long long)v[i - 1] * v[k] * v[i + x]);
			}
		}
	}
	printf("%lld\n", d[1][n]);

	return 0;
}