Pagini recente » Cod sursa (job #1189678) | Cod sursa (job #1426056) | Cod sursa (job #2509) | Cod sursa (job #2674952) | Cod sursa (job #906947)
Cod sursa(job #906947)
#include <fstream>
#include <algorithm>
using namespace std;
const long long INF = (1LL << 60);
int N;
int D[502];
long long minD[502][502];
int main()
{
ifstream fin("podm.in");
ofstream fout("podm.out");
fin >> N;
for (int i = 0; i <= N; ++i)
fin >> D[i];
for (int i = 2; i <= N; ++i)
for (int j = 1; j <= N - i + 1; ++j)
{
if (i == 2)
{
minD[j][j + i - 1] = 1LL * D[j - 1] * D[j] * D[j + i - 1];
continue;
}
minD[j][j + i - 1] = INF;
for (int k = j; k < j + i - 1; ++k)
minD[j][j + i - 1] = min(minD[j][j + i - 1], minD[j][k] + minD[k + 1][j + i - 1] + 1LL * D[j - 1] * D[k] * D[i + j - 1]);
}
fout << minD[1][N] << '\n';
fin.close();
fout.close();
}