/** * 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; advance(it, 1); } cnt += it->second; return ans / 2.0; } for (;it!=m.end();++it) { if (cnt == (msize / 2)) ans = it->first; cnt+=it->second; } 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]++; // } // } #ifndef ONLINE_JUDGE freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #endif cin >> msize; for(int i = 0; i < msize; ++i){ int x; cin >> x; m[x]++; } cout << fixed << setprecision(1) << get_median() << endl; return 0; }