Pagini recente » Cod sursa (job #221773) | Cod sursa (job #855004) | Cod sursa (job #2933845) | Cod sursa (job #1049159) | Cod sursa (job #1656668)
#include <iostream>
#include <fstream>
using namespace std;
const char iname[] = "podm.in";
const char oname[] = "podm.out";
#define MAXN 505
#define Min(a, b) ((a) < (b) ? (a) : (b))
#define INF 100000000000000000LL
long long int bst[MAXN][MAXN], d[MAXN]; int n;
int main(void)
{
FILE * f1 = fopen (iname,"r");
FILE * f2 = fopen (oname,"w");
int i;
fscanf(f1,"%d",&n);
for (i=0 ;i<=n ;i++){
fscanf(f1,"%Illd",&d[i]);
}
for (i=1 ;i <=n ;i++) bst[i][i]=0;
for (i=1 ; i <= n-1 ;i++){
bst[i][i+1]= d[i-1]*d[i]*d[i+1];
}
int w,k,j;
for (w=2; w<=n-1;w++)
{
for(i=1; i<= n-w ;i++)
{
j=w+i;
bst[i][j]=INF;
for (k=i ;k<=j-1;k++)
{
bst[i][j]=Min(bst[i][j],bst[i][k]+bst[k+1][j]+d[i-1]*d[k]*d[j]);
}
}
}
fprintf(f2,"%lld\n",bst[1][n]);
fclose(f1);
fclose(f2);
}