Cod sursa(job #1475238)

Utilizator lilian_ciobanuLilian Ciobanu lilian_ciobanu Data 23 august 2015 18:03:17
Problema Parantezare optima de matrici Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
 
#define min(a,b) ((a)<(b)?(a):(b))
 
const long long INF = 100000000000000000;
 
int main(){
    long long a[505][505];
    long long d[505];
    long long n,i,j,k,m;
 
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
 
    scanf("%lld",&n);
 
    for(i=1; i<=n+1; ++i){
        scanf("%lld", d+i);
    }
 
    for(i=1; i<=n; ++i){
        a[i][i] = 0;
    }
 
    for(i=2; i<=n; ++i){
        a[i-1][i] = d[i-1]*d[i]*d[i+1];
    }
 
 
    for(k=2; k<n; ++k){
        for(i=1; i<=n-k; ++i){
            m = INF;
            for(j=i; j < i+k; ++j){
                m = min(m,a[i][j] + a[j+1][i+k] + d[i]*d[j+1]*d[i+k+1]);
            }
            a[i][i+k] = m;
        }
    }
 
    printf("%lld",a[1][n]);
 
return 0;
}