Pagini recente » Cod sursa (job #698196) | Cod sursa (job #2617271) | Cod sursa (job #1380040) | Cod sursa (job #1712533) | Cod sursa (job #1094433)
#include <fstream>
#define D 505
#define inf 100000000000000000LL
using namespace std;
ifstream in("podm.in");
ofstream o("podm.out");
int n;
long long d[D];
long long int nrmin[D][D];
void cit()
{
int i;
in>>n;
for(i=0;i<=n;i++)in>>d[i];
in.close();
}
void pd()
{
int i,j,k,x,minim,kmin;
for(i=1;i<n;i++) nrmin[i][i+1]=d[i-1]*d[i]*d[i+1];
for(x=2;x<=n-1;x++)
{
for (i=1;i<=n-x+1;i++)
{
j=i+x;
minim=inf;
for(k=i;k<j;k++)
{
if(minim>nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j]){
kmin=k;
minim=nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j];}
}
nrmin[i][j]=minim;
nrmin[j][i]=kmin;
}
}
}
int main()
{
cit();
pd();
o<<nrmin[1][n]<<'\n';
o.close();
return 0;
}