Pagini recente » Cod sursa (job #3190989) | Cod sursa (job #3284784) | Monitorul de evaluare | Cod sursa (job #1419596) | Cod sursa (job #532692)
Cod sursa(job #532692)
#include <cstdio>
#include <algorithm>
using namespace std;
long long n, d[505], m[10000][10000];
void citire()
{
scanf ("%lld ",&n);
for (long long i=0; i<=n; i++)
scanf ("%lld ",&d[i]);
}
void minim(long long i,long long j)
{
//long long x=m[i][i]+m[i+1][j]+d[i-1]*d[i]*d[j];
long long x=9999999999;
m[i][j]=x;
m[j][i]=i;
for (long long k=i; k<j; k++)
{
int y=m[i][k]+m[k+1][j]+d[i-1]*d[k]*d[j];
if (x>y)
{
x=y;
m[i][j]=x;
m[j][i]=k;
}
}
}
void matrice()
{
for (long long i=2; i<=n; i++)
{
for (long long k=1, j=i; j<=n; j++,k++)
minim(k,j);
}
}
/*void afisare(long long i,long long j)
{
if (i==j)
{
printf ("A%lld",i);
return;
}
printf ("(");
afisare(i,m[j][i]);
afisare(m[j][i]+1,j);
printf (")");
}*/
int main()
{
freopen ("podm.in","r",stdin);
freopen ("podm.out","w",stdout);
citire();
matrice();
//afisare(1,n);
printf ("%lld\n",m[1][n]);
return 0;
}