Pagini recente » Cod sursa (job #2664047) | Cod sursa (job #3164928) | Cod sursa (job #1271045) | Cod sursa (job #1738533) | Cod sursa (job #1023486)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
using namespace std;
int d[502];
long long a[502][502];
int main()
{
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
int n;
scanf("%d", &n);
for (int i=0; i<=n; i++){
scanf("%d", &d[i]);
}
for (int i=1; i<=n; i++){
a[i][i] = 0;
}
for (int i=1; i<=n-1; i++){
a[i][i+1] = (long long)d[i-1] * d[i] * d[i+1];
}
for (int j=3; j<=n; j++){
for (int i=1; i<= n-j+1; i++){
long long minn = LONG_LONG_MAX;
int from = i;
int to = j+i-1;
for (int k=from; k<to; k++){
long long current = (long long)d[from-1] *(long long)d[k]* (long long)d[to] + a[from][k] + a[k+1][to];
if (current < minn){
minn = current;
}
}
a[i][j+i-1] = minn;
}
}
printf("%lld", a[1][n]);
return 0;
}