Pagini recente » Cod sursa (job #235187) | Cod sursa (job #2404488) | Cod sursa (job #2673461) | Cod sursa (job #2509434) | Cod sursa (job #2626777)
#include <stdio.h>
#define LIM 500000000000000LL
long long dp[501][501];
int m[501];
int main() {
FILE *fin = fopen( "podm.in", "r" );
FILE *fout = fopen( "podm.out", "w" );
int n, i, j, k, d;
long long min;
fscanf( fin, "%d", &n );
for ( i = 0; i <= n; ++i ) {
fscanf( fin, "%d", &m[i] );
}
for ( i = 1; i < n; ++i ) {
dp[i][i + 1] = m[i - 1] * m[i] * m[i + 1];
}
for ( d = 1; d < n; ++d ) {
for ( i = 1; i <= n - d; ++i ) {
min = LIM;
for ( k = i; k < i + d; ++k ) {
if ( min > dp[i][k] + dp[k + 1][i + d] + m[i - 1] * m[k] * m[i + d] ) {
min = dp[i][k] + dp[k + 1][i + d] + m[i - 1] * m[k] * m[i + d];
}
}
dp[i][i + d] = min;
}
}
fprintf( fout, "%lld", dp[1][n] );
fclose( fin );
fclose( fout );
return 0;
}