/** * author: ekusiadadus * created: 18.08.2021 13:43:33 **/ // #include #include using namespace std; map < int, int > m; int msize; double get_median() { int cnt = 0; double ans = 0; map::iterator it = m.begin(); if (msize % 2 == 0) { bool f = true; bool s = true; for(;it != m.end();){ cnt += it->second; if(f&&(cnt >= (msize/2))) ans+=it->first, f = false; if(s&&(cnt >= (msize/2+1))) ans+=it->first, s = false; if(!f && !s) break; advance(it, 1); } cnt += it->second; return ans / 2.0; } bool f = true; for (;it!=m.end();++it) { cnt+=it->second; if (f&&(cnt >= (msize / 2 + 1))) ans = it->first, f = false; if(!f) break; } return ans; } int main() { // ifstream in ("input.txt"); // if (! in ) { // cerr << "Error" << endl; // return 0; // } // string str; // int x; // while (getline( in , str)) { // stringstream stream(str); // while (1) { // stream >> x; // if (!stream) break; // m[x]++; // } // } cin >> msize; for(int i = 0; i < msize; ++i){ int x; cin >> x; m[x]++; } cout << fixed << setprecision(1) << get_median() << endl; return 0; }