Cod sursa(job #1579326)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 24 ianuarie 2016 17:19:40
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <cstdio>
#define MAXN 550
#define inf 0x7fffffffffffffff;

using namespace std;

int n, d[MAXN];
long long a[MAXN][MAXN];

void citire()
{
	scanf("%d", &n);
	for (int i = 0; i <= n; i++)
		scanf("%d", &d[i]);
}

void update(int i, int j)
{
	long long mini = inf;
    for (int k = i; k < j; k++)
        if (a[i][k] + a[k+1][j] + 1LL * d[i-1] * d[k] * d[j] < mini)
			mini = a[i][k] + a[k+1][j] + 1LL * d[i-1] * d[k] * d[j];
	a[i][j] = mini;
}

void solve()
{
	for (int i = 1; i <= n; i++)
		for (int j = 1; j+i <= n; j++)
			update(j, j+i);
}

int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);

    citire();
    solve();
    printf("%lld\n", a[1][n]);

    return 0;
}