Cod sursa(job #633185)

Utilizator socheoSorodoc Ionut socheo Data 13 noiembrie 2011 01:45:41
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<cstdio>

using namespace std;

long long n, i, j, q, k, d[502], rez[502][502], min, val;
int main()
{   freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    scanf("%lld",&n);
    val = 100000000000000LL;
    for(i = 0; i <= n; i++)
        scanf("%lld",&d[i]);
    for(i = 1; i < n; i++)
        rez[i][i+1] = d[i-1] * d[i] * d[i+1];
    for(q = 2; q < n; q++)
        for(i = 1; i <= n-q; i++)
        { j = i+q;
          min= val;
          for(k = i; k < j; k++)
            if(min > rez[i][k] + rez[k+1][j] + d[i-1] * d[k] * d[j])
                min = rez[i][k] + rez[k+1][j] + d[i-1] * d[k] * d[j];
          rez[i][j] = min;
        }
    printf("%lld",rez[1][n]);
    return 0;
}