Pagini recente » Cod sursa (job #3238869) | Cod sursa (job #752220) | Cod sursa (job #2305326) | Cod sursa (job #589824) | Cod sursa (job #1355812)
#include <fstream>
#define NMAX 502
#define INF 10000000000
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int n;
long long int d[NMAX];
long long int nrmin[NMAX][NMAX];
void init();
void pd();
int main(){
init();
pd();
fout<<nrmin[1][n]<<'\n';
return 0;
}
void init(){
fin>>n;
int i;
for(i = 0; i<= n; ++i)fin>>d[i];
}
void pd(){
int lg, i, j, k, minim, kmin;
for(i = 1; i < n; ++i) nrmin[i][i+1] = d[i-1]*d[i]*d[i+1];
for(lg = 3; lg <= n; ++lg){
for(i = 1; i <= n-lg+1; ++i){
j = i+lg-1;
minim = INF;
for(k = i; k < j; ++k){
if(minim > nrmin[i][k] + nrmin[k+1][j] + d[i-1]*d[k]*d[j]){
minim = nrmin[i][k] + nrmin[k+1][j] + d[i-1]*d[k]*d[j];
kmin = k;
}
}
nrmin[i][j] = minim;
nrmin[j][i] = kmin;
}
}
}