Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Istoria paginii runda/001. | Rating Iancu Matei (mardeias) | Cod sursa (job #813263)
Cod sursa(job #813263)
#include <fstream>
#define lgmax 10001
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
void citire();
void pd();
void afisare(int x, int y);
long long int m[lgmax][lgmax];
long long int d[lgmax];
int n;
long long int inf=1000000000;
int main()
{
citire();
pd();
fout<<m[1][n]<<'\n';
//afisare(1,n);
fout.close();
return 0;
}
void citire()
{
int i;
fin>>n;
for(i=0;i<n+1;i++)
fin>>d[i];
}
void pd()
{
int lg, i,j,k,pozmin;
long long int min;
for(lg=2;lg<=n;lg++)
for(i=1;i<=n-lg+1;i++)
{
j=i+lg-1;//sf secventei
//se inmultesc nr matrice de la Ai laAj
for(k=i,min=inf;k<j;k++)
{
//det min si poz sau
if(min>m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j])
{
min=m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j];
pozmin=k;
}
}
m[i][j]=min;
m[j][i]=pozmin;
}
}
/*
void afisare(int i,int j) //parantezarea optimala a matricelor de la i la j
{
//membrul stang
if(i==m[j][i]) fout<<"A"<<i;
else
{
fout<<"(";
afisare(i, m[j][i]);
fout<<")";
}
fout<<"x";
if(j==m[j][i]+1) fout<<"A"<<j;
else
{
fout<<"(";
afisare(m[j][i]+1,j);
fout<<")";
}
}
*/