Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool doable(std::vector<int> &vec, double mid, int k) {
- double sum_less = 0;
- double sum_more = 0;
- for (int i = 0; i < vec.size(); i++) {
- if (vec[i] - mid >= 0)
- sum_more += vec[i] - mid;
- else
- sum_less += mid - vec[i];
- }
- return (sum_less <= sum_more / 100.0 * (100.0 - k))
- }
- void solve() {
- std::ios_base::sync_with_stdio(false);
- using namespace std;
- int n, k;
- cin >> n >> k;
- vector<int> vec;
- read_vector<int>(vec, n);
- sort(vec.begin(), vec.end());
- double l = 0;
- double r = vec[n - 1];
- double mid = l + (r - l) / 2;
- int itr = 300;
- while (itr-- > 0) {
- mid = l + (r - l) / 2;
- if (doable(vec, mid, k))
- l = mid;
- else
- r = mid;
- }
- cout << (l+r)/2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement