Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define all(v) v.begin(), v.end()
- #define intt int32_t
- #define int long long
- #define endl '\n'
- int compute(int l, int r, vector<int> &v, vector<int> &sum, vector<int> &squares)
- {
- if(l>r) {
- return 0;
- }
- int rsum = sum[r+1] - sum[l];
- int n = r-l+1;
- int ceilV = ceil((double)rsum/(double)(n));
- int floorV = floor((double)rsum/(double)(n));
- int diff1 = ceilV*n - rsum;
- int diff2 = rsum - floorV*n;
- int V = ((diff1>diff2)?floorV:ceilV);
- return (squares[r+1]-squares[l] + V*V*n - 2*(sum[r+1]-sum[l])*V);
- }
- void solve()
- {
- int n;
- cin >> n;
- vector<int> v(n);
- for(int i = 0; i < n; i++)
- cin >> v[i];
- sort(all(v));
- vector<int> sums(n+1, 0), squares(n+1, 0);
- for(int i = 0; i < n; i++)
- {
- sums[i+1] = sums[i] + v[i];
- squares[i+1] = squares[i] + v[i]*v[i];
- }
- int ans = INT64_MAX;
- for(int i = 0; i < n; i++)
- {
- ans = min(ans, compute(0, i, v, sums, squares) + compute(i+1, n-1, v, sums, squares));
- }
- cout << ans << endl;
- }
- intt main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- cout.tie(NULL);
- cout.precision(numeric_limits<double>::max_digits10);
- int t = 0;
- cin >> t;
- for(int i = 0; i < t; i++)
- {
- // cout << "Case #" << i << ": ";
- solve();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement