Pagini recente » Cod sursa (job #3215375) | Cod sursa (job #3260008) | Cod sursa (job #3171237) | Cod sursa (job #3194329) | Cod sursa (job #904366)
Cod sursa(job #904366)
#include <iostream>
#include <fstream>
using namespace std;
int N, i, j;
long long D[505][505], V[505];
long long min(long long a, long long b)
{
return a < b ? a : b;
}
int main()
{
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
cin>>N;
for(i=0;i<=N;++i)
scanf("%d", &V[i]);
//for(i=0;i<=N;++i)
// cout<<V[i]<<" ";
for(i=1;i<=N;++i)
D[i][i] = 0;
for(i=1;i<=N-1;++i)
D[i][i+1] = V[i-1] * V[i] * V[i+1];
//cout<<"\n";
int w, k;
for(w=2;w<=N-1;++w)
{
for(i=1;i<=N-w;++i)
{
j = i + w;
D[i][j] = 10000000000000000;
for(k=i;k<=j-1;++k)
D[i][j] = min(D[i][j], D[i][k] + D[k+1][j] + V[i-1] * V[k] * V[j]);
}
}
/* for(i=1;i<=N;++i)
{
for(j=1;j<=N;++j)
cout<<D[i][j]<<" ";
cout<<"\n";
}
*/
cout<<D[1][N]<<"\n";
return 0;
}