Cod sursa(job #3241792)

Utilizator AllerAller Aller Aller Data 3 septembrie 2024 20:36:05
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

const long int inf=1e17+7;
long long dp[503][503];

int main()
{
    int n, i, k, l, v[503];
    f>> n; n++;
    for(i=1; i<=n; i++){
        f>> v[i];
    }
    for(i=1; i<=n; i++){
        for(k=1; k<=n; k++){
            dp[i][k]=inf;
        }
    }
    for(i=1; i<=n; i++){
        dp[i][i]=0; dp[i][i+1]=0;
    }
    for(i=1; i<=n-2; i++){
        dp[i][i+2]=1LL*v[i]*v[i+1]*v[i+2];
    }
    for(l=3; l<=n; l++){
        for(i=1; i<=n-l+1; i++){
            for(k=i+1; k<i+l-1; k++){
                dp[i][i+l-1]=min(dp[i][i+l-1], dp[i][k]+dp[k][i+l-1]+1LL*v[i]*v[k]*v[i+l-1]);
            }
        }
    }
    g<< dp[1][n];

    return 0;
}