Pagini recente » Cod sursa (job #787409) | Cod sursa (job #1062018) | Cod sursa (job #1608865) | Cod sursa (job #1303620) | Cod sursa (job #2379904)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
const int NMAX = 502;
long long mat[NMAX][NMAX];
int N;
int x, y;
struct dimensiuni
{
int l, c;
}D[NMAX];
void Read()
{
fin >> N;
fin >> x >> y;
D[1].l = x;
D[1].c = y;
for(int i = 2; i <= N ; ++i)
{
fin >> x;
D[i].c = x;
D[i].l = D[i-1].c;
}
fin.close();
}
void Do()
{
for(int d = 1; d < N; ++d)
{
for(int i = 1; i + d <= N; ++i)
{
for(int j = i; j < i + d; ++j)
if(mat[i][i + d] == 0) mat[i][i + d] = 1LL *( mat[i][j] + mat[j+1][i+d] + D[i].l * D[j].c * D[i+d].c);
else mat[i][i + d] = min(mat[i][i + d], 1LL *( mat[i][j] + mat[j+1][i+d] + D[i].l * D[j].c * D[i+d].c) );
}
}
fout << mat[1][N] << "\n";
}
int main()
{
Read();
Do();
return 0;
}