Cod sursa(job #2779991)

Utilizator AACthAirinei Andrei Cristian AACth Data 5 octombrie 2021 17:57:06
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
#define cin f
#define cout g
#define int long long
const int Max = 500 + 1;
void nos()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}
int n;
int a[Max];
int dp[Max][Max];
void read()
{
	f>>n;
	int i;
	for(i=0;i<=n;i++)
		f>>a[i];
}
void solve()
{
    int i,j,k;
    for(i=1;i<=n;i++)
    	dp[i][i] = 0;
    for(i=1;i<n;i++)
    	dp[i][i+1] = a[i-1] * a[i] * a[i+1];
    for(int len = 2;len <= n - 1;++len)
    	for(i=1;i<=n-len;++i)
    	{
    		j = i + len;
    		dp[i][j] = LLONG_MAX;
    		for(k = i;k<=j - 1;k++)
    			dp[i][j] = min(dp[i][j],dp[i][k] + dp[k+1][j] + a[i-1]*a[k]*a[j]);
    	}	
 	cout<<dp[1][n];
}
void restart()
{

}
int32_t main()
{
    nos();
        read();
        solve();
        restart();
    
    return 0;
}