Pagini recente » Cod sursa (job #1177983) | Cod sursa (job #1775875) | Cod sursa (job #2293140) | Cod sursa (job #1776199) | Cod sursa (job #794821)
Cod sursa(job #794821)
#include <cstdio>
#define min(a, b) ((a < b) ? a : b)
#define LGMAX 501
#define INF 0x03f3f3f3f3f
using namespace std;
FILE *inFile = fopen ("podm.in", "r");
FILE *outFile = fopen ("podm.out", "w");
int n;
long long d[LGMAX];
long long s[LGMAX][LGMAX];
void read()
{
fscanf (inFile, "%d\n", &n);
for (int i = 0; i <= n; ++i)
fscanf (inFile, "%lld ", &d[i]);
}
long long solve()
{
for (int i = 1; i < n; ++i)
s[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
for (int l = 2; l < n; ++l)
for (int i = 1; i <= n - l; ++i)
{
int j = l + i;
s[i][j] = INF;
for (int k = i; k <= j - i; ++k)
s[i][j] = min(s[i][j], s[i][k] + s[k + 1][j] + d[i - 1] * d[k] * d[j]);
}
return s[1][n];
}
int main()
{
read();
fprintf (outFile, "%lld", solve());
return 0;
}