fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long int
  3.  
  4. using namespace std;
  5. ll n,a,arr[110],k,smoke[110][110],l,min1,r,sum[110],t,f,d;
  6.  
  7. ll newno(ll r,ll s)
  8. { if(r==s)
  9. return arr[r];
  10. else
  11. return (sum[s+1]-sum[r])%100;
  12. }
  13. ll mixture(ll i,ll j)
  14. {
  15. if(smoke[i][j]!=-1)
  16. {
  17. return smoke[i][j];}
  18.  
  19. if(i==j)
  20. {
  21. smoke[i][j]=0;
  22. return smoke[i][j];}
  23.  
  24. if((j-i)==1)
  25. {
  26. smoke[i][j]=arr[i]*arr[j];
  27. return smoke[i][j];
  28. }
  29. else
  30. { min1=INT_MAX;
  31. for(l=i;l<j;l++)
  32. {
  33. r=mixture(i,l)+mixture(l+1,j)+(newno(i,l)*newno(l+1,j));
  34. if(r<min1)
  35. min1=r;
  36. }
  37. smoke[i][j]=min1;
  38. return smoke[i][j];
  39. }
  40. }
  41.  
  42. int main()
  43. {
  44. while(cin>>n)
  45. { d=n;
  46. k=0;
  47. t=1;
  48. sum[0]=0;
  49. while(n>0)
  50. {
  51. cin>>a;
  52. arr[k]=a;
  53. sum[t]=a+sum[t-1];
  54. k++;
  55. t++;
  56. n--;
  57. }
  58.  
  59. memset(smoke,-1,sizeof(smoke));
  60. mixture(0,d-1);
  61. cout<<smoke[0][d-1]<<"\n";
  62. }
  63. return 0;
  64. }
  65.  
  66.  
  67.  
Success #stdin #stdout 0s 3436KB
stdin
Standard input is empty
stdout
Standard output is empty