Cod sursa(job #1417642)

Utilizator MaarcellKurt Godel Maarcell Data 10 aprilie 2015 18:42:25
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
#include <fstream>
#define LL long long
using namespace std;

LL N,a[540],dp[510][510];

int main(){
    ifstream fin("podm.in");
    ofstream fout("podm.out");
    fin >> N;

    int i,len,j,k;
    for (i=1; i<=N+1; i++) fin >> a[i];
    for (i=1; i<N; i++) dp[i][i+1]=a[i]*a[i+1]*a[i+2];

    for (len=3; len<=N; len++)
        for (i=1; i+len-1<=N; i++){
            j=i+len-1;
            dp[i][j]=(1LL<<60);
            for (k=i; k<j; k++)
                dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1]);
        }

    fout << dp[1][N] << "\n";

    return 0;
}