Pagini recente » Cod sursa (job #2046806) | Monitorul de evaluare | Cod sursa (job #215061) | Cod sursa (job #1716645) | Cod sursa (job #823969)
Cod sursa(job #823969)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("podm.in");
ofstream out ("podm.out");
typedef long long LL;
const LL INF = (1LL << 60) - 1;
const int MAXN = 505;
LL A[MAXN];
LL Best[MAXN][MAXN];
inline LL _min (LL A, LL B)
{
if (A < B)
return A;
return B;
}
int main ()
{
int N, i, j, k, x;
LL v;
in >> N;
for (i = 0; i <= N; i ++)
in >> A[i];
for (i = 1; i < N; i ++)
Best[i][i + 1] = (LL) A[i - 1] * A[i] * A[i + 1];
for (i = 2; i < N; i ++)
for (j = 1; j <= N - i; j ++){
x = i + j;
Best[j][x] = (LL) INF;
v = (LL) A[j - 1] * A[x];
for (k = j; k < x; k ++)
Best[j][x] = _min (Best[j][x], Best[j][k] + Best[k + 1][x] + (LL) v * A[k]);
}
out << Best[1][N];
return 0;
}