Pagini recente » Cod sursa (job #2356982) | Cod sursa (job #2654125) | Borderou de evaluare (job #1602020) | Cod sursa (job #522738)
Cod sursa(job #522738)
#include<fstream>
#include <time.h>
using namespace std;
#define INF 100000000000000000LL
ifstream f("podm.in");
ofstream g("podm.out");
long long d[1<<9];
long long bst[1<<9][1<<9],aux;
int i,j,k,N,x;
int main () {
//clock_t start = clock();
f>>N;
for ( i = 0 ; i <= N ; ++i ){
f>>d[i];
}
for ( i = 1 ; i < N ; ++i ){
bst[i][i+1] = d[i-1] * d[i] * d[i+1];
}
for ( k = 2 ; k < N ; ++k ){
for ( i = 1 ; i <= N - k ; ++i ){
x = i + k;
bst[i][x] = INF;
for ( j = i ; j < x ; ++j ){
aux = bst[i][j] + bst[j+1][x] + d[i-1] * d[x] * d[j] ;
bst[i][x] = bst[i][x] < aux ? bst[i][x] : aux ;
}
}
}
g<<bst[1][N];
f.close();
g.close();
//printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);
return 0;
}