Pagini recente » Cod sursa (job #3234234) | Profil carmen97 | Cod sursa (job #3235706) | Cod sursa (job #499955) | Cod sursa (job #518416)
Cod sursa(job #518416)
#include<stdio.h>
long a[501][501][2],m1,m2,t1,t2,v1,v2;
int dim[501],i,n,j,d,k,v[501][501][501];
int main()
{freopen("podm.in","r",stdin);
freopen("podm.out","w",stdout);
scanf("%d\n",&n);
for(i=0;i<=n;i++)
scanf("%d ",&dim[i]);
for(i=1;i<=n;i++)
{a[i][i][0]=0;
a[i][i][1]=0;}
for(i=1;i<=n-1;i++)
{t1=(dim[i-1]*dim[i])/1000;
t2=(dim[i-1]*dim[i])%1000;
a[i][i+1][0]=(t1*dim[i+1])/1000;
a[i][i+1][1]=(((t1*dim[i+1])%1000)+(t2*dim[i+1])/1000)*1000+(t2*dim[i+1])%1000;}
for(d=2;d<n;d++)
{for(i=1;i<=n-d;i++)
{a[i][i+d][0]=400000000;
a[i][i+d][1]=0;
for(k=i;k<i+d;k++)
{t1=(dim[i-1]*dim[k])/1000;
t2=(dim[i-1]*dim[k])%1000;
v1=(t1*dim[i+d])/1000;
v2=(((t2*dim[i+d])/1000)+((t1*dim[i+d])%1000))*1000+(t2*dim[i+d])%1000;
m1=a[i][k][0]+a[k+1][i+d][0]+v1;
m2=a[i][k][1]+a[k+1][i+d][1]+v2;
if(a[i][i+d][0]>m1||(a[i][i+d][0]==m1&&a[i][i+d][1]>m2))
{a[i][i+d][0]=m1;
a[i][i+d][1]=m2;}}}}
if(a[1][n][0]==0)
printf("%ld",a[1][n][1]);
else
{printf("%ld",a[1][n][0]+a[1][n][1]/1000000);
if(a[1][n][1]%1000000<100000)
printf("0");
printf("%ld\n",a[1][n][1]%1000000);}
fclose(stdin);
fclose(stdout);
return 0;}