fork(1) download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define get(a) scanf("%lld", &a);
  4. #define rep(n) for( ll i = 1; i <= n; i++ )
  5. #define repVector(v) for( typeof(v.begin()) it = v.begin(); it != v.end(); it++ )
  6. #define repSet(s) for( typeof(s.begin()) it = s.begin(); it != s.end(); it++ )
  7. #define all(c) c.begin(), c.end()
  8. #define MEM(a,b) memset(a,(b),sizeof(a))
  9. #define eb emplace_back
  10. #define pb push_back
  11. #define absol(a) ( ( a >= 0 ) ? a : -a )
  12. #define FOR(i,a,b) for( ll i = a; i <= b; i++ )
  13. #define matrix vector< vector<ll> >
  14. #define F first
  15. #define S second
  16. #define mp make_pair
  17. #define L 2*r
  18. #define R 2*r+1
  19. #define MOD 100007
  20. #define INPFILE freopen("input.in","r",stdin)
  21. using namespace std;
  22. ll color[105][105] , cost[105][105] , v[105] = {0};
  23.  
  24. ll colorsum( ll i ,ll j ){
  25. ll sum = 0;
  26. FOR( k,i,j )
  27. sum = (sum + v[k])%100;
  28. return sum;
  29. }
  30.  
  31. // Didnt understand why it is wrong!
  32. int main(){
  33. ll n;
  34. while( scanf("%lld",&n ) > 0 ){
  35. MEM(cost,MOD); MEM(color,0);
  36. MEM(v,0);
  37. FOR( i,1,n )
  38. get(v[i]);
  39. ll sum,j;
  40. //Initialize
  41. FOR(i,1,n)
  42. cost[i][i] = v[i];
  43.  
  44. FOR(i,1,n-1){
  45. j = i + 1;
  46. cost[i][j] = v[i]*v[j];
  47. }
  48.  
  49. //Logic
  50. FOR( l,3,n ){
  51. FOR( i,1,n-l+1 ){
  52. j = i + l - 1;
  53. cost[i][j] = min( cost[i][j-1] + colorsum(i,j-1)*cost[j][j] , cost[i+1][j] + colorsum(i+1,j)*cost[i][i] );
  54. }
  55. }
  56. cout<<cost[1][n]<<endl;
  57. }
  58. }
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
Success #stdin #stdout 0s 3268KB
stdin
Standard input is empty
stdout
Standard output is empty