Cod sursa(job #2947461)

Utilizator Vladgiuscavladgiusca Vladgiusca Data 26 noiembrie 2022 09:27:02
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
const int NMAX=507;
pair<ll,ll>V[NMAX];
ll dp[NMAX][NMAX];
int main()
{
    int N;
    int i,j,k;
    ll minim;
    in>>N;
    in>>V[1].first>>V[1].second;
    for(i=2; i<=N; i++){
        in>>V[i].second;
        V[i].first=V[i-1].second;
    }
    for(i=1; i<N; i++)
        dp[i][i+1]=V[i].first*V[i].second*V[i+1].second;
    for(j=2; j<N; j++){
        for(i=1; i<=N-j; i++){
            minim=9223372036854775800;
            for(k=i; k<i+j; k++)
                minim=min(minim,dp[i][k]+dp[k+1][i+j]+V[i].first*V[k].second*V[i+j].second);
            dp[i][i+j]=minim;
        }
    }
    out<<dp[1][N];
    return 0;
}