Pagini recente » Cod sursa (job #3214843) | Cod sursa (job #2932247) | Cod sursa (job #3181146) | Cod sursa (job #2556178) | Cod sursa (job #1020085)
#include <cstdio>
#include <climits>
int n;
long long a[501], b[501][501];
void Citire()
{
FILE *F = fopen("podm.in", "r");
fscanf(F, "%lld", &n);
for (int i = 0; i <= n; ++i)
fscanf(F, "%lld", &a[i]);
fclose(F);
}
long long Min(long long a, long long b)
{
if (a < b)
return a;
return b;
}
void Matrice()
{
int k;
for (int i = 1; i <= n - 1; ++i)
b[i][i + 1] = a[i - 1] * a[i] * a[i + 1];
for (int i = 2; i <= n - 1; ++i)
for (int j = 1; j <= n - i; ++j)
{
k = i + j;
b[j][k] = 0x3f3f3f3f;
for (int tz = j; tz <= k - 1; ++tz)
b[j][k] = Min(b[j][k], b[j][tz] + b[tz + 1][k] + a[j - 1] * a[tz] * a[k]);
}
}
void Afisare()
{
FILE *G = fopen("podm.out", "w");
fprintf(G, "%lld", b[1][n]);
fclose(G);
}
int main()
{
Citire();
Matrice();
Afisare();
return 0;
}