Pagini recente » Cod sursa (job #1830832) | Cod sursa (job #486865) | Cod sursa (job #370241) | Cod sursa (job #2868927) | Cod sursa (job #501158)
Cod sursa(job #501158)
#include<stdio.h>
#include<stdlib.h>
const long long INF = (long long) 1 << 60;
const int N = 501;
long long mat[N][N];
inline long long min(long long a,long long b){
return a<b ? a : b;
}
long long parOpt(int *v,int n){
int i,j,k;
for(i = n - 1;i >= 1;i--)
for(j = i + 1;j <= n;j++){
mat[i][j] = INF;
for(k = i; k < j;k++){
mat[i][j] = min(mat[i][j],mat[i][k] + mat[k + 1][j] + (long long)v[i] * v[k + 1] * v[j + 1]);
}
}
return mat[1][n];
}
int main(){
FILE *f,*g;
f = fopen("podm.in","r");
g = fopen("podm.out","w");
int n,i;
fscanf(f,"%d",&n);
int *v = (int*)malloc((n + 2) * sizeof(int));
for(i = 1;i <= n+1 ; i++)
fscanf(f,"%d",&v[i]);
long long nropt = parOpt(v,n);
fprintf(g,"%lld",nropt);
fclose(f);
fclose(g);
return 0;
}