fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long total_cost = 0;
  5. bool check(vector<int> &arr, long long x){
  6. int n = arr.size();
  7. int med = 0;
  8. if(n%2 == 0)
  9. med = n/2-1;
  10. else
  11. med = (n-1)/2;
  12. int sum = 0;
  13. for(int i = 0; i < n; i++)
  14. sum += arr[i];
  15.  
  16. int cost_of_med = 0;
  17. for(int i = med; i < n; i++){
  18. if(arr[i] < x)
  19. cost_of_med += x-arr[i];
  20. }
  21. total_cost = n*x - sum;
  22. if(cost_of_med > total_cost)
  23. return false;
  24.  
  25. return true;
  26. }
  27.  
  28. int main() {
  29. int n; cin >> n;
  30. vector<int> arr(n);
  31. for(int i = 0; i < n; i++)
  32. cin >> arr[i];
  33. sort(arr.begin(), arr.end());
  34.  
  35. int med = 0;
  36. if(n%2 == 0)
  37. med = n/2-1;
  38. else
  39. med = (n-1)/2;
  40. long long lo = arr[med];
  41. long long hi = 10e9;
  42. long long ans = 0;
  43. while(lo <= hi){
  44. long long mid = (lo+hi)/2;
  45. if(check(arr,mid) == false){
  46. lo = mid+1;
  47. }
  48. else{
  49. ans = total_cost;
  50. hi = mid-1;
  51. }
  52. }
  53. cout << ans;
  54. return 0;
  55. }
Success #stdin #stdout 0s 5316KB
stdin
5
1 1000000000 1 1000000000 1
stdout
500000002