Pagini recente » Cod sursa (job #2376262) | Cod sursa (job #106745) | Cod sursa (job #2838970) | Cod sursa (job #495212) | Cod sursa (job #1434990)
#include <fstream>
using namespace std;
ifstream in("podm.in");
ofstream out("podm.out");
#define N 505
#define INF 9223372036854775807
long long d[N], a[N][N];
int n;
int main()
{
in >> n;
for(int i = 1; i <= n + 1; i++)
in >> d[i];
for(int l = 2; l <= n; l++)
{
for(int i = 1; i <= n; i++)
{
int j = i + l - 1;
if(j > n)
continue;
if(l == 2)
{
a[i][j] = d[i] * d[i + 1] * d[i + 2];
continue;
}
if(l == 3)
{
a[i][j] = min(a[i][i + 1] + d[i] * d[i + 2] * d[j + 1], d[i] * d[i + 1] * d[j + 1] + a[i + 1][j]);
continue;
}
a[i][j] = INF;
a[i][j] = min(a[i][j - 1] + d[i] * d[j] * d[j + 1] ,a[i + 1][j] + d[i] * d[i + 1] * d[j + 1]);
for(int k = i + 1; k <= j - 2; k++)
a[i][j] = min(a[i][j], a[i][k] + a[k + 1][j] + d[i] * d[k + 1] * d[j + 1]);
}
}
out << a[1][n] << '\n';
return 0;
}