Cod sursa(job #812754)

Utilizator popacamilpopa camil popacamil Data 14 noiembrie 2012 13:26:31
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<cstdio>
#include<algorithm>
using namespace std;

const int INF=2000000000;

long long int d[1000],n,i,k,j,m[1000][1000],x;
int main(){

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

    scanf("%d",&n);

    for(i=0;i<=n;++i){

        scanf("%d",&d[i]);

    }
    for(i=1;i<=n;++i){

        m[i][i]=0;

    }

    for(i=1;i<=n-1;++i){

        m[i][i+1]=d[i-1]*d[i]*d[i+1];

    }

    for(x=2;x<=n-1;++x){


        for(i=1;i<=n-x;++i){

            j=i+x;
            m[i][j]=INF;

            for(k=i;k<=j-1;++k){

                m[i][j]=min(m[i][j],m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j]);

            }
        }
    }
    printf("%d",m[1][n]);


    return 0;
}