Pagini recente » Cod sursa (job #2896119) | Cod sursa (job #1555079) | Statistici Prisac Alexandru (prisacalexandru) | Cod sursa (job #1320618) | Cod sursa (job #2027845)
#include <stdio.h>
#define MAX_N 500
long long v[MAX_N + 1];
long long Solve[MAX_N + 1][MAX_N + 1] ;
long long min (long long a, long long b ) {
if (a < b )
return a ;
return b ;
}
long long solve(int st, int dr) {
long long op ;
int i ;
if ( Solve[st][dr] == 0 ) {
if ( st + 1 == dr ) {
Solve[st][dr] = 0 ;
}
else {
op = (long long) 1 << 62 ;
for ( i = st + 1 ; i < dr ; i++ )
op = min(op, v[st] * v[i] * v[dr] + solve(st, i) + solve(i, dr)) ;
Solve[st][dr] = op ;
}
}
return Solve[st][dr] ;
}
int main() {
FILE *fin, *fout ;
fin = fopen ("podm.in", "r" ) ;
fout = fopen ("podm.out", "w" ) ;
int n, i ;
long long answer ;
fscanf (fin, "%d", &n ) ;
for ( i = 0 ; i <= n ; i++ )
fscanf (fin, "%lld", &v[i] ) ;
answer = solve(0, n);
fprintf(fout, "%lld", answer ) ;
return 0 ;
}