Pagini recente » Rezultatele filtrării | Rezultatele filtrării | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #2302676)
#include <fstream>
#define N_MAX 505
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
int N;
int64_t d[N_MAX];
int64_t dp[N_MAX][N_MAX];
int main() {
in >> N;
for (int i { 0 }; i <= N; ++i)
in >> d[i];
for (int i { 1 }; i < N; ++i)
dp[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
for (int next { 2 }; next < N; ++next)
for (int i { 1 }; i + next <= N; ++i) {
int j { i + next };
dp[i][j] = 1LL << 62;
for (int mij { i }; mij < i + next; ++mij)
dp[i][j] = min(dp[i][j], dp[i][mij] + dp[mij + 1][j] + d[i - 1] * d[mij] * d[j]);
}
out << dp[1][N];
}