func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 2e5 + 2;   int n, a[N];   long long pref[N];   int get(int pos) {     int lo = 0, hi = min(pos - 1, n - pos);     while (hi - lo > 3) {       int m1 = (lo + lo + hi) / 3;       int m2 = (lo + hi + hi) / 3;       long double r1 = (pref[pos] - pref[pos - m1 - 1] + pref[n] - pref[n - m1]) /                        double(m1 * 2 + 1);       long double r2 = (pref[pos] - pref[pos - m2 - 1] + pref[n] - pref[n - m2]) /                        double(m2 * 2 + 1);       r1 -= a[pos];       r2 -= a[pos];       if (r1 < r2)         lo = m1;       else         hi = m2;     }     int ret = lo;     for (int i = lo; i <= hi; i++) {       long double r1 =           (pref[pos] - pref[pos - ret - 1] + (pref[n] - pref[n - ret])) /           double(ret * 2 + 1);       long double r2 = (pref[pos] - pref[pos - i - 1] + (pref[n] - pref[n - i])) /                        double(i * 2 + 1);       r1 -= a[pos];       r2 -= a[pos];       if (r1 < r2) ret = i;     }     return ret;   }   int main() {     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> a[i];     }     sort(a + 1, a + n + 1);     for (int i = 1; i <= n; i++) {       pref[i] = pref[i - 1] + a[i];     }     long double mx = 0;     pair<int, int> p = {1, 0};     for (int i = 1; i <= n; i++) {       int best = get(i);       long double ret =           (pref[i] - pref[i - best - 1] + (pref[n] - pref[n - best])) /           double(best * 2 + 1);       ret -= a[i];       if (mx <= ret) {         mx = ret;         p = {i, best};       }     }     vector<int> ans;     for (int i = p.first; i >= (p.first - p.second); i--) ans.push_back(a[i]);     for (int i = n; i > (n - p.second); i--) ans.push_back(a[i]);     sort(ans.begin(), ans.end());     cout << ans.size() << endl;     for (int i = 0; i < ans.size(); i++) cout << ans[i] <<    ;   }   