輸出和浮點二分
阿新 • • 發佈:2022-03-19
//!皮卡丘分番茄醬 #include<bits/stdc++.h> using namespace std; const int N = 1e4 + 10; int n, k; int q[N]; vector<double> v; bool iseaten(vector<double> v, double mid, int n){ if(accumulate(v.begin(), v.end(), 0.0) < mid * n) return false; priority_queue<double> q; for(auto t : v) q.push(t); while(n --){ // if(fabs(mid - 15.75) < 1) // cout << n << ' ' << q.top() << "*******" << endl; if(q.top() - mid < 0){ return false; } else{ q.push(q.top() - mid); q.pop(); } } return true; } void eaten(vector<double> v, int n){ // cout << "eaten++++++++++" << endl; int nn = v.size(); double l = 0, r = v[nn - 1]; // cout << l << ' ' << r << endl; while(r - l > 1e-6){ double mid = (l + r) / 2; // cout << mid << "{{{{{" << endl; if(iseaten(v, mid, n)) l = mid; else r = mid; } cout << fixed << setprecision(4) << l << endl; } int main(){ cin >> k >> n; for(int i = 0; i < k; ++i){ int x; cin >> x; v.push_back(x * x); } sort(v.begin(), v.end()); eaten(v, n); // cout << setbase(16) << 19; return 0; }