Pagini recente » Cod sursa (job #217791) | Cod sursa (job #2444781) | Cod sursa (job #2405902) | Cod sursa (job #722685) | Cod sursa (job #2347386)
#include <fstream>
#define VMAX 505
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
unsigned long long int cmin[VMAX][VMAX];
int n, d[VMAX];
unsigned long long int minim(unsigned long long int x, unsigned long long int y);
int main()
{
int i, j, k, t;
fin >> n;
for (i = 0; i <= n; i ++)
fin >> d[i];
for (i = 1; i < n; i ++)
cmin[i][i + 1] = d[i - 1] * d[i] * d[i + 1];
for (t = 3; t <= n; t ++)
for (i = 1; i <= n - t + 1; i ++)
{
j = i + t - 1;
cmin[i][j] = cmin[i][i] + cmin[i + 1][j] + d[i - 1] * d[i] * d[j];
cmin[j][i] = i;
for (k = i + 1; k < j; k ++)
{
if (cmin[i][j] > cmin[i][k] + cmin[k + 1][j] + d[i - 1] * d[k] * d[j])
cmin[j][i] = k;
cmin[i][j] = minim(cmin[i][j], cmin[i][k] + cmin[k + 1][j] + d[i - 1] * d[k] * d[j]);
}
}
fout << cmin[1][n] << '\n';
return 0;
}
unsigned long long int minim(unsigned long long int x, unsigned long long int y)
{
if (x <= y)
return x;
return y;
}