Cod sursa(job #2664764)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 29 octombrie 2020 12:11:13
Problema Parantezare optima de matrici Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#define nMax 1<<9

using namespace std;

int n,v[nMax];
long long int sol[nMax][nMax];

long long int min(long long int x,long long int y) {
    return y+(x<y)*(x-y);
}

void read() {
    int i;
    scanf("%d",&n);
    for(i=0;i<=n;++i) {
        scanf("%d",&v[i]);
    }
}

void solve() {
    int i,j,k;
    for(i=1;i<n;++i) {
        for(j=0;j<n-i;++j) {
            sol[j][j+i]=sol[j][j]+v[j]*v[j+1]*v[j+i+1]+sol[j+1][j+i];
            for(k=1;k<i;++k) {
                sol[j][j+i]=min(sol[j][j+i],sol[j][j+k]+v[j]*v[j+k+1]*v[j+i+1]+sol[j+k+1][j+i]);
            }
        }
    }
}

int main() {
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    read();
    solve();
    printf("%lld",sol[0][n-1]);
    return 0;
}