Pagini recente » Cod sursa (job #1395478) | Cod sursa (job #437061) | Cod sursa (job #2199208) | Cod sursa (job #2575608) | Cod sursa (job #2469046)
#include <iostream>
#include <fstream>
const int MAXN = 500 + 5;
using namespace std;
typedef long long ll;
ifstream in("podm.in");
ofstream out("podm.out");
int n;
ll dp[MAXN][MAXN],dimensiune[MAXN];
int main()
{
in>>n;
for(int i = 1; i <= n + 1; i++)
in>>dimensiune[i];
for(int i = 1; i <= n; i++){
dp[i][i] = 0;
dp[i][i + 1] = dimensiune[i] * dimensiune[i + 1] * dimensiune[i + 2];
}
///dp[i][i + ceva] = dp[i][j] + dp[j + 1][i + ceva] + dimensiune[i] * dimensiune[j + 1] * dimensiune[j + ceva + 1]
for(int ceva = 2; ceva <= n - 1; ceva ++){
for(int i = 1; i + ceva <= n; i++){
dp[i][i + ceva] = 2e18;
for(int j = i; j <= i + ceva - 1; j++){
dp[i][i + ceva] = min(dp[i][i + ceva],dp[i][j] + dp[j + 1][i + ceva] + dimensiune[i] * dimensiune[j + 1] * dimensiune[i + ceva + 1]);
}
}
}
out<<dp[1][n];
return 0;
}