Pagini recente » Borderou de evaluare (job #481307) | Cod sursa (job #1378402)
#include <stdio.h>
#include <limits.h>
#define nMAX 500
#define LL_MAX 100000000000000000LL
long long d[nMAX + 1];
long long podm[nMAX + 1][nMAX + 1];
int main()
{
FILE *fin, *fout;
fin = fopen("podm.in", "r");
fout = fopen("podm.out", "w");
int n;
fscanf(fin, "%d", &n);
int i, k, delta;
for (i = 0; i <= n; ++i) {
fscanf(fin, "%lld", d + i);
}
for (delta = 1; delta < n; ++delta) {
for (i = 1; i <= n - delta; ++i) {
int j = i + delta;
podm[i][j] = (1ll << 62);
for (k = i; k < j; ++k) {
long long par = podm[i][k] + podm[k + 1][j] + d[i - 1] * d[k] * d[j];
podm[i][j] = podm[i][j] < par ? podm[i][j] : par;
}
}
}
fprintf(fout, "%lld\n", podm[1][n]);
fclose(fin);
fclose(fout);
return 0;
}