Pagini recente » Cod sursa (job #2750007) | Cod sursa (job #1636386) | Cod sursa (job #68056) | Cod sursa (job #339925) | Cod sursa (job #1104003)
#include <cstdio>
#define minim(a,b) (a<b)?(a):(b)
using namespace std;
unsigned long long a[510][510];
unsigned int d[510];
int n;
int main() {
freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d",&n);
for (int i=0;i<=n;i++) scanf("%u",&d[i]);
for (int i=1;i<n;i++) a[i][i+1] = (unsigned long long)d[i-1]*d[i]*d[i+1];
for (int dt=2;dt<=n-1;dt++) {
for (int i=1;i<=n-dt;i++) {
int j = i+dt;
a[i][j] = 0xffffffff;
for (int k=i;k<j;k++) {
a[i][j] = minim(a[i][j],a[i][k] + a[k+1][j] + (unsigned long long)d[i-1]*d[k]*d[j]);
}
}
}
printf("%llu\n",a[1][n]);
return 0;
}