Pagini recente » Cod sursa (job #2416362) | Cod sursa (job #2523404) | Cod sursa (job #489155) | Cod sursa (job #865240) | Cod sursa (job #372593)
Cod sursa(job #372593)
#include <stdio.h>
#define Nmax 510
int k, i, j, l, n;
int M[Nmax];
long long OPT[Nmax][Nmax];
int main (){
FILE * f = fopen("podm.in","r");
fscanf (f, "%d", &n);
for (i = 1 ; i <= n + 1 ; i++)
fscanf (f, "%d", &M[i]);
for (i = 1; i < n; i++)
OPT[i][i+1] = (long long) M[i] * M[i+1] * M[i+2];
for (l = 3 ; l <= n ; l++)
for (i = 1 ; i <= n - l + 1 ; i++){
j = i + l - 1;
if (j > n) j = n;
OPT[i][j] = (long long) 1<<60;
for (k = i ; k < j ; k++)
if (OPT[i][j] > OPT[i][k] + OPT[k+1][j] + M[i] * M[k+1] * M[j+1])
OPT[i][j] = OPT[i][k] + OPT[k+1][j] + M[i] * M[k+1] * M[j+1];
}
FILE * g = fopen ("podm.out" , "w");
fprintf (g, "%lld", OPT[1][n]);
fclose(f);
fclose(g);
return 0;
}