Pagini recente » Cod sursa (job #1642954) | Cod sursa (job #1018438) | Cod sursa (job #1400162) | Cod sursa (job #2430605) | Cod sursa (job #823956)
Cod sursa(job #823956)
#include <cstdio>
#include <algorithm>
using namespace std;
long long int inm[501][501];
short int d[501];
long long int best(int a,int b)
{
if(inm[a][b] || a== b)
return inm[a][b];
int k;
inm[a][b] = 1LL << 62;
const long long vec = d[a-1] * d[b];
for(k=a;k<b;++k)
inm[a][b] = min(inm[a][b],best(a,k) + best(k+1,b) + vec * d[k]);
return inm[a][b];
}
int main()
{
int i,n;
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
for(i=0;i<=n;++i)
scanf("%d",&d[i]);
printf("%lld\n",best(1,n));
return 0;
}