Pagini recente » Cod sursa (job #329356) | Cod sursa (job #2614613) | Cod sursa (job #944621) | Cod sursa (job #2140030) | Cod sursa (job #2032716)
#include<stdio.h>
#include<utility>
#include<climits>
#define MAXN 500
#define INF 1000000000
long long din(int,int);
FILE*fin,*fout;
int dimensions[MAXN+1];
long long best[MAXN+1][MAXN+1];
int main()
{
fin=fopen("podm.in","r");
fout=fopen("podm.out","w");
int N;
fscanf(fin,"%d",&N);
for(int i=0;i<=N;i++)
{
fscanf(fin,"%d",&dimensions[i]);
}
long long ans=din(1,N);
fprintf(fout,"%lld",ans);
fclose(fin);
fclose(fout);
}
long long din(int st,int dr)
{
for(int d=1;d<=dr-st;d++)
{
for(int i=st;i<=dr-d;i++)
{
long long ans=LONG_LONG_MAX;
for(int k=i;k<i+d;k++)
{
if(best[i][k]+best[k+1][i+d]+1LL*dimensions[i-1]*dimensions[k]*dimensions[i+d] < ans)
{
ans=best[i][k]+best[k+1][i+d]+dimensions[i-1]*dimensions[k]*dimensions[i+d];
}
}
best[i][i+d]=ans;
}
}
#ifndef INFOARENA
for(int i=st;i<=dr;i++)
{
for(int j=i;j<=dr;j++)
{
fprintf(stderr,"%d ",best[i][j]);
}
fprintf(stderr,"\n");
}
#endif // INFOARENA
return best[st][dr];
}