Pagini recente » Cod sursa (job #1293412) | Sedinta 2009-02-16 | Monitorul de evaluare | Profil TincaMatei | Cod sursa (job #3280969)
#include <bits/stdc++.h>
#define int unsigned long long
#define pull pair<unsigned long long,unsigned long long>
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
int n,x,y,dp[520][520];
pull mat[520];
int32_t main()
{
f>>n>>x;
for(int i=1; i<=n; i++)
y=x, f>>x, mat[i]={y,x};
for(int i=1; i<=n; i++)
for(int j=i+1; j<=n; j++)
dp[i][j]=ULLONG_MAX;
for(int t=2; t<=n; t++)
{
int i=1, j=t;
while(i<=n-t+1)
{
for(int k=i; k<=j; k++)
dp[i][j]=min(dp[i][j], dp[i][k]+dp[k+1][j]+mat[i].first*mat[k].second*mat[j].second);
i++, j++;
}
}
g<<dp[1][n];
return 0;
}