Cod sursa(job #1916240)

Utilizator 1475369147896537415369Andrei Udriste 1475369147896537415369 Data 9 martie 2017 08:43:32
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>

int n;
long long M[501][501], p[501];

int main(){

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

    scanf("%d", &n);

    for(int i = 0; i <= n; i++){
        scanf("%lld", &p[i]);
    }
    for(int row = 1; row < n; row++){
        for(int j = row + 1; j <= n; j++){
            int i = j - row;
            M[i][j] = 1LL << 60;

            for(int k = i; k < j; k++){
                if(M[i][j] > M[i][k] + M[k+1][j] + p[i-1] * p[k] * p[j]){
                    M[i][j] = M[i][k] + M[k+1][j] + p[i-1] * p[k] * p[j];
                    M[j][i] = k;
                }
            }
        }
    }
    printf("%lld", M[1][n]);
    return 0;
}