Pagini recente » Cod sursa (job #40732) | Cod sursa (job #1697050) | Cod sursa (job #542587) | Cod sursa (job #1186629) | Cod sursa (job #379929)
Cod sursa(job #379929)
#include <stdio.h>
#include <string>
using namespace std;
int n, v[512];
long long cost[512][512], sum, INF;
/*int i,j,k;
ll nr;
for (i=1; i<n; i++)
for (j=1; j<=n-i; j++)
{
nr=INF;
for (k=j; k<j+i; k++)
nr=min(nr,best[j][k]+best[k+1][j+i]+(ll)d[j]*d[k+1]*d[j+i+1]);
best[j][j+i]=nr;
}
}*/
void solve()
{
int i,j,z;
long long val;
for ( i = 2; i < n; ++i) {
for ( j = 1; j <= n - i; ++j) {
val = INF;
for ( z = j; z <= j + i - 1; ++z)
val = min( val, cost[j][z] + cost[z+1][i+j]+( long long)v[j-1] *v[z] *v[i+j]);
cost[j][ i + j] = val;
}
}
}
int main() {
int i;
freopen("podm.in", "r", stdin);
freopen("podm.out", "w", stdout);
scanf("%d", &n);
scanf("%d", &v[0]);
for ( i = 1; i <= n; ++i) {
scanf("%d", &v[i]);
}
INF = 666666666666666LL ;
for ( i = 1; i <= n; ++i) cost[i][i] = 0;
for ( i = 1; i < n; ++i) cost[i][i+1] = 1LL * v[i - 1] * v[i] * v[i + 1];
/*int i,j,k;
ll nr;
for (i=1; i<n; i++)
for (j=1; j<=n-i; j++)
{
nr=INF;
for (k=j; k<j+i; k++)
nr=min(nr,best[j][k]+best[k+1][j+i]+(ll)d[j]*d[k+1]*d[j+i+1]);
best[j][j+i]=nr;
}
}*/
solve();
printf("%lld", cost[n][1]);
return 0;
}