Cod sursa(job #1494389)

Utilizator tudormaximTudor Maxim tudormaxim Data 30 septembrie 2015 23:26:22
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std;
const int nmax = 501;
long long best[nmax][nmax], d[nmax];

int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    int n, i, j, k, x;
    scanf("%d ", &n);
    for(i=0; i<=n; i++)
        scanf("%d ", &d[i]);
    for(i=1; i<n; i++)
        best[i][i+1]=d[i-1]*d[i]*d[i+1];
    for(i=2; i<n; i++)
        for(j=1; j<=n-i; j++)
        {
            x=i+j;
            best[j][x]=INFINITY;
            for(k=j; k<=x-1; k++)
                    best[j][x]=min(best[j][x],best[j][k]+best[k+1][x]+d[j-1]*d[k]*d[x]);
        }
    printf("%lld",best[1][n]);
    fclose(stdin);
    fclose(stdout);
    return 0;
}