Pagini recente » Cod sursa (job #2629040) | Istoria paginii runda/simci | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1518612)
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 500 + 1;
int A[MAX_N];
long long dp[MAX_N][MAX_N];
int N;
int main()
{
ifstream in("podm.in");
ofstream out("podm.out");
in >> N;
for (int i = 0; i <= N; ++i)
in >> A[i];
for (int i = N; i >= 1; i--)
{
dp[i][i] = 0;
if (i < N)
dp[i][i + 1] = A[i - 1] * A[i] * A[i + 1];
for (int j = i + 2; j <= N; ++j)
{
long long best = numeric_limits<long long>::max();
for (int k = i; k < j; ++k)
best = min(best, dp[i][k] + dp[k + 1][j] + A[i - 1] * A[k] * A[j]);
dp[i][j] = best;
}
}
out << dp[1][N] << "\n";
return 0;
}