Advertisement
Guest User

Untitled

a guest
Sep 25th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.71 KB | None | 0 0
  1. bool doable(std::vector<int> &vec, double mid, int k) {
  2.     double sum_less = 0;
  3.     double sum_more = 0;
  4.     for (int i = 0; i < vec.size(); i++) {
  5.         if (vec[i] - mid >= 0)
  6.             sum_more += vec[i] - mid;
  7.         else
  8.             sum_less += mid - vec[i];  
  9.     }
  10.     return (sum_less <= sum_more / 100.0 * (100.0 - k))
  11. }
  12.  
  13. void solve() {
  14.     std::ios_base::sync_with_stdio(false);
  15.     using namespace std;
  16.     int n, k;
  17.     cin >> n >> k;
  18.     vector<int> vec;
  19.     read_vector<int>(vec, n);
  20.     sort(vec.begin(), vec.end());
  21.  
  22.     double l = 0;
  23.     double r = vec[n - 1];
  24.     double mid = l + (r - l) / 2;
  25.     int itr = 300;
  26.     while (itr-- > 0) {
  27.         mid = l + (r - l) / 2;
  28.         if (doable(vec, mid, k))
  29.             l = mid;
  30.         else
  31.             r = mid;
  32.     }
  33.     cout << (l+r)/2;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement