Cod sursa(job #965948)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 24 iunie 2013 23:08:08
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX = 505;
const long long INF = 1LL<<62;
long long DP[NMAX][NMAX],D[NMAX];
long long Solve(int i,int j)
{
    if(DP[i][j]!=INF) return DP[i][j];
    for(int k=i;k<j;k++) DP[i][j]=min(DP[i][j],Solve(i,k)+Solve(k+1,j)+D[i-1]*D[k]*D[j]);
    return DP[i][j];
}
int main()
{
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    int N,i,j; scanf("%d",&N);
    for(i=0;i<=N;i++) scanf("%lld",&D[i]);
    for(i=1;i<=N;i++) for(j=1;j<=N;j++) if(i==j) DP[i][j]=0; else DP[i][j]=INF;
    printf("%lld\n",Solve(1,N));
    return 0;
}