Pagini recente » Cod sursa (job #1729610) | Cod sursa (job #542060) | Cod sursa (job #1039611) | Cod sursa (job #2986125) | Cod sursa (job #1328402)
#include<fstream>
using namespace std;
ifstream fin( "podm.in" );
ofstream fout( "podm.out" );
const int nmax = 500;
const long long inf = (1LL << 62);
int a[ nmax + 1 ];
long long d[ nmax + 1 ][ nmax + 1 ];
int main() {
int n;
long long mn;
fin >> n;
for( int i = 0; i <= n; ++ i ) {
fin >> a[ i ];
}
for( int i = 1; i < n; ++ i ) {
d[ i ][i + 1] = a[i - 1] * a[ i ] * a[i + 1];
}
for( int l = 2; l < n; ++ l ) {
for( int i = 1; i <= n - l; ++ i ) {
mn = inf;
for( int k = i; k < i + l; ++ k ) {
if ( mn > d[ i ][ k ] + d[k + 1][i + l] + (long long)a[i - 1] * a[ k ] * a[i + l] ) {
mn = d[ i ][ k ] + d[k + 1][i + l] + (long long)a[i - 1] * a[ k ] * a[i + l];
}
}
d[ i ][ i + l ] = mn;
}
}
fout << d[ 1 ][ n ] << "\n";
fin.close();
fout.close();
return 0;
}