#include #include using namespace std; void mergesort(vector &lst, int left, int right) { if (right - left <= 1) return; int mid = (left + right) / 2; mergesort(lst, left, mid); mergesort(lst, mid, right); vector buf; for (int i = left; i < mid; ++i) buf.push_back(lst[i]); for (int i = right - 1; i >= mid; --i) buf.push_back(lst[i]); int left_index = 0; int right_index = (int)buf.size() - 1; for (int i = left; i < right; ++i) { if (buf[left_index] <= buf[right_index]) { lst[i] = buf[left_index++]; } else { lst[i] = buf[right_index--]; } } } int main() { int N; cin >> N; vector A(N); for (int i = 0; i < N; ++i) cin >> A[i]; mergesort(A, 0, N); if (N % 2) { cout << A[N / 2] << endl; } else { cout << (float)(A[N / 2] + A[N / 2 - 1]) / 2 << endl; } }