Pagini recente » Cod sursa (job #1685652) | Cod sursa (job #1748231) | Cod sursa (job #918970) | Cod sursa (job #1353927) | Cod sursa (job #1723171)
#include <cstdio>
#include <climits>
using namespace std;
#define N 501
#define type long long
long long d[N],n, M[N][N];
char buff[4096];
short pos=4096;
inline char nextchar()
{
if(pos==4096)
{
fread(buff,1,4096,stdin);
pos=0;
}
return buff[pos++];
}
inline type nextlong()
{
char c=nextchar();
while(c<'0' || c>'9')
c=nextchar();
type nr=0;
while(c>='0' && c<='9')
{
nr=nr*10+c-'0';
c=nextchar();
}
return nr;
}
void progDin()
{
long long nr,i,j,k,kmin,mint;
for(nr=2;nr<=n;++nr)//cate matrice se inmultesc
{
for(i=1;i<=n-nr+1;++i)//indicele Ai
{
j=i+nr-1;//se inmultesc nr matrice, de la Ai la Aj
for(k=i,mint=LLONG_MAX;k<j;++k)
if(mint>M[i][k]+M[k+1][j]+d[i-1]*d[k]*d[j])//determin minuimul si pozitia sa
{
mint=M[i][k]+M[k+1][j]+d[i-1]*d[k]*d[j];
kmin=k;
}
M[i][j]=mint;M[j][i]=kmin;
}
}
FILE *g=freopen("podm.out","w",stdout);
printf("%lld",M[1][n]);
}
void getPath()
{
//alta data
}
int main()
{
short i;
FILE *f=freopen("podm.in","r",stdin);
scanf("%lld",&n);
for(i=0;i<=n;++i)
d[i]=nextlong();
progDin();
//getPath();
}