Pagini recente » Cod sursa (job #3120716) | Cod sursa (job #145531) | Diferente pentru implica-te/arhiva-educationala intre reviziile 221 si 222 | Cod sursa (job #2192877) | Cod sursa (job #794622)
Cod sursa(job #794622)
#include <iostream>
#include <fstream>
using namespace std;
const int MAX = 502;
const long long inf = 0x3f3f3f3f3f3f3f3f;
int N;
int vect[MAX];
long long mat[MAX][MAX];
void solve()
{
for(int i=0;i<N-1;++i)
mat[i][i+1] = vect[i]*vect[i+1]*vect[i+2];
for(int i=2;i<N;++i)
for(int j=0;i+j<N;++j)
{
int x = j,y = j+i;
mat[x][y] = inf;
for(int k=0;k<i;++k)
if (mat[x][y] > mat[x][x+k] + mat[x+k+1][y] + vect[x]*vect[x+k+1]*vect[y+1])
mat[x][y] = mat[x][x+k] + mat[x+k+1][y] + vect[x]*vect[x+k+1]*vect[y+1];
}
ofstream fout;
fout.open("podm.out");
fout << mat[0][N-1] << endl;
fout.close();
}
void read()
{
ifstream fin;
fin.open("podm.in");
fin >> N;
for(int i=0; i<=N ; ++i)
fin >> vect[i];
fin.close();
}
int main()
{
read();
solve();
return 0;
}