Cod sursa(job #1770893)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 4 octombrie 2016 22:55:00
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 505;
const long long int MAX = 1LL << 61;
long long int d[N][N];
long long int a[N];

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