Pagini recente » Cod sursa (job #2421858) | Cod sursa (job #470723) | Cod sursa (job #894117) | Cod sursa (job #892032) | Cod sursa (job #1311337)
#include <stdio.h>
#define NMAX 523
#define VMAX 2000000000
FILE *fin, *fout;
int n, d[NMAX], min;
int main()
{
fin = fopen("podm.in", "r");
fout = fopen("podm.out", "w");
fscanf(fin, "%d", &n);
for(int i = 1; i<= n+1; i++) fscanf(fin, "%d", &d[i]);
long long int arr[NMAX][NMAX];
for(int i = 1; i <= n; i++) arr[i][i] = 0;
for(int i = 2; i <= n; i++)
{
int c = 1;
for(int j = i; j <= n; j++)
{
//fprintf(fout, "check i = %d j = %d\n", c, j);
min = VMAX;
for(int k = c; k< j; k++)
{
if(arr[c][k] + arr[k+1][j] + d[c]*d[k+1]*d[j+1] < min) min = arr[c][k] + arr[k+1][j] + d[c]*d[k+1]*d[j+1];
//fprintf(fout, "i = %d j = %d k = %d d[i] = %d d[k+1] = %d d[j] = %d", c, j, k, d[c], d[k+1], d[j+1]);
}
arr[c][j] = min;
c++;
}
}
fprintf(fout, "%lld\n", arr[1][n]);
/*for(int i = 1; i<= n; i++)
{
for(int j = 1; j<= n; j++)
{
fprintf(fout, "%lld ", arr[i][j]);
}
fprintf(fout, "\n");
}*/
fclose(fin);
fclose(fout);
return 0;
}