Advertisement
shashankag

Untitled

Mar 10th, 2023
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;  
  3.  
  4.  
  5. #define all(v) v.begin(), v.end()
  6. #define intt int32_t
  7. #define int long long
  8. #define endl '\n'
  9.  
  10. int compute(int l, int r, vector<int> &v, vector<int> &sum, vector<int> &squares)
  11. {
  12.     if(l>r) {
  13.         return 0;
  14.     }
  15.     int rsum = sum[r+1] - sum[l];
  16.     int n = r-l+1;
  17.     int ceilV = ceil((double)rsum/(double)(n));
  18.     int floorV = floor((double)rsum/(double)(n));
  19.     int diff1 = ceilV*n - rsum;
  20.     int diff2 = rsum - floorV*n;
  21.     int V = ((diff1>diff2)?floorV:ceilV);
  22.     return (squares[r+1]-squares[l] + V*V*n - 2*(sum[r+1]-sum[l])*V);
  23. }
  24.  
  25.  
  26. void solve()
  27. {
  28.     int n;
  29.     cin >> n;
  30.     vector<int> v(n);
  31.     for(int i = 0; i < n; i++)
  32.         cin >> v[i];
  33.     sort(all(v));
  34.     vector<int> sums(n+1, 0), squares(n+1, 0);
  35.     for(int i = 0; i < n; i++)
  36.     {
  37.         sums[i+1] = sums[i] + v[i];
  38.         squares[i+1] = squares[i] + v[i]*v[i];
  39.     }
  40.     int ans = INT64_MAX;
  41.     for(int i = 0; i < n; i++)
  42.     {
  43.         ans = min(ans, compute(0, i, v, sums, squares) + compute(i+1, n-1, v, sums, squares));
  44.     }
  45.     cout << ans << endl;
  46. }
  47.  
  48. intt main()
  49. {
  50.     ios_base::sync_with_stdio(false);
  51.     cin.tie(NULL);
  52.     cout.tie(NULL);
  53.     cout.precision(numeric_limits<double>::max_digits10);
  54.     int t = 0;
  55.     cin >> t;
  56.     for(int i = 0; i < t; i++)
  57.     {
  58.         // cout << "Case #" << i << ": ";
  59.         solve();
  60.     }
  61.     return 0;
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement