Pagini recente » Cod sursa (job #1358835) | Cod sursa (job #683112) | Cod sursa (job #629112) | Cod sursa (job #528701) | Cod sursa (job #525791)
Cod sursa(job #525791)
#include <cstdio>
#include <climits>
using namespace std;
#define NMAX 500
#define INF 100000000000000000LL
int main(void)
{
int n, i, j, k, l;
int d[NMAX+1];
long long** M = NULL;
long long q;
freopen("podm.in","r",stdin);
scanf("%d",&n);
M = new long long* [NMAX+1];
for (i=0;i<=n;++i)
{
M[i] = new long long [NMAX+1];
}
for (i=0;i<=n;++i)
{
scanf("%d",&d[i]);
M[i][i] = 0;
}
for (l=2;l<=n;++l)
{
for (i=1;i<=n-l+1;++i)
{
j = i+l-1;
M[i][j] = INF;
for (k=i;k<j;++k)
{
q = M[i][k]+M[k+1][j]+d[i-1]*d[k]*d[j];
if (q < M[i][j])
{
M[i][j] = q;
}
}
}
}
freopen("podm.out","w",stdout);
printf("%lld\n",M[1][n]);
for (i=0;i<=n;++i)
{
delete[] M[i];
}
delete[] M;
return 0;
}