Pagini recente » Cod sursa (job #564472) | Cod sursa (job #1429305) | Cod sursa (job #474384) | Cod sursa (job #535417) | Cod sursa (job #1093767)
#include <stdio.h>
using namespace std;
#define Nmax 505
int n;
long long int mat_dim[Nmax];
long long int mat_cost[Nmax][Nmax];
const long long int inf = 500000000000000;
void read()
{
freopen("podm.in", "r", stdin);
scanf("%d", &n);
for (int i = 1; i <= n + 1; ++i)
scanf("%lld", &mat_dim[i]);
fclose(stdin);
}
long long int get_cost(int i, int j)
{
long long int cost;
if (mat_cost[i][j] < inf)
return mat_cost[i][j];
else {
for (int k = i; k < j; ++k){
cost = get_cost(i, k) + get_cost(k+1, j) + mat_dim[i] * mat_dim[k+1] * mat_dim[j+1];
if (mat_cost[i][j] > cost)
mat_cost[i][j] = cost;
}
return mat_cost[i][j];
}
}
int main()
{
read();
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
mat_cost[i][j] = inf;
for (int i = 1; i <= n; ++i)
mat_cost[i][i] = 0;
freopen("podm.out", "w", stdout);
printf("%lld\n", get_cost(1, n));
fclose(stdout);
return 0;
}