Pagini recente » Cod sursa (job #1399498) | Cod sursa (job #2698783) | Cod sursa (job #1819453) | Monitorul de evaluare | Cod sursa (job #3321018)
#include <fstream>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
const int nmax = 500;
const int maxint = (1 << 30);
int n, a[nmax + 2];
int dp[nmax + 2][nmax + 2];
int costt(int i, int j, int k){
return a[i - 1] * a[j] * a[k];
}
int main(){
in>>n;
for(int i = 0; i <= n; i++){
in>>a[i];
}
for(int length = 1; length <= n; length++){
for(int i = 1, j = length; j <= n; i++, j++){
dp[i][j] = maxint * (length > 1);
for(int k = i; k + 1 <= j; k++){
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + costt(i, k, j));
}
}
}
out<<dp[1][n]<<"\n";
return 0;
}