Advertisement
Guest User

Untitled

a guest
Jun 10th, 2016
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define F first
  6. #define S second
  7.  
  8. int main() {
  9. #ifdef LOCAL
  10.   freopen("input.txt", "r", stdin);
  11.   freopen("output.txt", "w", stdout);
  12. #endif
  13.   int n;
  14.   cin >> n;
  15.   int a[n];
  16.   int s = 0;
  17.   int i, j, k, q;
  18.   for (i = 0; i < n; i++) {
  19.     cin >> a[i];
  20.   }
  21.   sort(a, a + n);
  22.   int dp[20][a[n - 1] + 2];
  23.   int m[20][a[n - 1] + 2][7];
  24.   for (i = 0; i <= 19; i++) {
  25.     for (j = 0; j <= a[n - 1]; j++) {
  26.       dp[i][j] = 1000000000;
  27.     }
  28.   }
  29.   for (j = 0; j <= a[n - 1]; j++) {
  30.     for (i = 0; i < n; i++) {
  31.             m[19][j][i] = a[i];
  32.     }
  33.   }
  34.   for (j = 1; j <= a[n - 1]; j++) {
  35.     dp[19][j] = 0;
  36.     for (i = 0; i < n; i++) {
  37.       dp[19][j] += a[i] / j;
  38.       m[19][j][i] %= j;
  39.     }
  40.   }
  41.   int last = a[n - 1];
  42.   int E[21];
  43.   for (int i = 1; i <= 19; i++){
  44.         E[i] = min(1 << i, last);
  45.   }
  46.   int add;
  47.   int p;
  48.   for (i = 18; i >= 1; i--) {
  49.     for (j = 1; j <= E[i]; j++) {
  50.       p = 1;
  51.       for (k = j; k <= E[i + 1]; k += j) {
  52.         add = 0;
  53.         for (q = 0; q < n; q++) {
  54.           add += m[i + 1][k][q] / j;
  55.         }
  56.         if (dp[i][j] > dp[i + 1][k] + add) {
  57.           dp[i][j] = dp[i + 1][k] + add;
  58.           p = k;
  59.         }
  60.       }
  61.       for (q = 0; q < n; q++) {
  62.         m[i][j][q] = m[i + 1][p][q] % j;
  63.       }
  64.     }
  65.   }
  66.   cout << dp[1][1];        
  67. #ifdef TIME
  68.   cerr << "TIME = " << 1. * clock() / CLOCKS_PER_SEC;
  69. #endif
  70.   return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement