Pagini recente » Cod sursa (job #309488) | Cod sursa (job #2736659) | Cod sursa (job #2368054) | Cod sursa (job #1711737)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
int D[510][510][3];
int main()
{
int N;
int a,b;
in >> N;
in >> a;
for (int i = 2;i <= N + 1;++i)
in >> b, D[i-1][i][0] = a, D[i-1][i][1] = b, a = b;
int rez = 1 << 30;
for (int i = 1;i <= N - 1;++i)
for (int j = 1;j + i +1 <= N+1;++j)
{
int mn = 1 << 30,s=0;
for (int k = j+1;k <= i+j;++k)
{
if (D[j][k][0] * D[k][i + j+1][0] * D[k][i + j+1][1] < mn)
{
mn = D[j][k][0] * D[k][i + j+1][0] * D[k][i + j+1][1];
D[j][i + j+1][0] = D[j][k][0];
D[j][i + j+1][1] = D[k][i+j+1][1];
s = D[j][k][2] + D[k][i + j+1][2];
}
}
D[j][i + j+1][2] = mn + s;
if (i == N - 1)
rez = min(rez, D[j][i + j + 1][2]);
}
out << rez << '\n';
return 0;
}