Pagini recente » Cod sursa (job #720844) | Cod sursa (job #1799784) | Monitorul de evaluare | Cod sursa (job #388738) | Cod sursa (job #2553559)
#include <bits/stdc++.h>
using namespace std;
ifstream inf("podm.in");
ofstream outf("podm.out");
int n, v[510];
long long s[510][510];
long long sol(int ,int );
int main()
{
inf>>n;
for(int i=0; i<=n; i++)
inf>>v[i];
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
s[i][j]=1e19;
for(int i=1; i<=n; i++)
{
s[i][i]=0;
if(i<n)
s[i][i+1]=v[i-1]*v[i]*v[i+1];
}
for(int i=1; i<n; i++)
{
for(int j=i+2; j<=n; j++)
{
if(s[i][j]!=1e19)
continue;
for(int k=i; k<j; k++)
{
s[i][j]=min(s[i][j], sol(i,k)+sol(k+1,j)+v[i-1]*v[k]*v[j]);
}
}
}
outf<<s[1][n];
return 0;
}
long long sol(int x, int y)
{
if(s[x][y]!=1e19)
return s[x][y];
for(int k=x; k<y; k++)
{
s[x][y]=min(s[x][y], sol(x,k)+sol(k+1,y)+v[x-1]*v[k]*v[y]);
}
return s[x][y];
}