Cod sursa(job #2126724)

Utilizator andreicoman299Coman Andrei andreicoman299 Data 9 februarie 2018 21:42:56
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>
#define MAXN 500

long long d[1 + MAXN][1 + MAXN];
long long v[1 + MAXN + 1];
int main(){
    FILE*fi,*fo;
    fi = fopen("podm.in","r");
    fo = fopen("podm.out","w");

    int n;
    fscanf(fi,"%d", &n);
    for(int i = 1; i <= n + 1; i++) fscanf(fi,"%lld", &v[i]);

    for(int i = 1; i < n; i++) d[i][i + 1] = v[i] * v[i + 1] * v[i + 2];
    for(int l = 2; l <= n - 1; l++)
        for(int i = 1; i + l <= n; i++){
            d[i][i + l] = 1000000000000000000;
            for(int j = i; j < i + l; j++)
                d[i][i + l] = std::min(d[i][i + l], d[i][j] + d[j + 1][i + l] + v[i] * v[j + 1] * v[i + l + 1]);
        }
    fprintf(fo,"%lld", d[1][n]);

    return 0;
}