Pagini recente » Cod sursa (job #1451289) | Cod sursa (job #702136) | Cod sursa (job #1616898) | Cod sursa (job #3282979) | Cod sursa (job #1002731)
#include <fstream>
#define NMAX 502
#define INFTY 500000000000000ll
using namespace std;
ifstream f("podm.in");
ofstream g("podm.out");
void matrix_chain_order(void);
void read_sizes(void);
long long p[NMAX];
long long m[NMAX][NMAX];
long long s[NMAX][NMAX];
int n;
int main()
{
read_sizes();
matrix_chain_order();
g << m[1][n];
f.close();
g.close();
return 0;
}
void read_sizes()
{
int i;
f >> n;
if (n > 0)
{
for (i = 0; i <= n; i++)
f >> p[i];
}
}
void matrix_chain_order()
{
int i, j, k, l;
for (i = 1;i <= n; i++)
m[i][i] = 0;
for (l = 1; l < n; l++)
{
for (i = 1; i <= n-l; i++)
{
j = i + l;
m[i][j] = INFTY;
for (k = i; k <= j-1; k++)
{
long long q = m[i][k] + m[k+1][j] + p[i-1] * p[k] * p[j];
if (q < m[i][j])
{
m[i][j] = q;
s[i][j] = k;
}
}
}
}
}