10107

題目說明

每當讀入一個新整數後,就必須馬上輸出目前所有數字的中位數。

輸入限制:
每個整數 X 都滿足 0 ≤ X < 2³¹、最多會有 9999 個整數、每個整數前後可能有空格。

解題過程

如果目前總數是奇數,則中位數是排序後的中間那個數。
如果目前總數是偶數,則中位數是中間兩數的平均值,直接取整數。

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long n;
    vector<long long> arr;

    while (cin >> n) {
        arr.push_back(n);

        // 每次輸入後即時排序
        sort(arr.begin(), arr.end());

        // 根據目前元素數量輸出中位數
        if (arr.size() % 2 == 0) {
            // 偶數個 → 取中間兩數的平均(只取整數部分)
            cout << (arr[arr.size() / 2 - 1] + arr[arr.size() / 2]) / 2 << endl;
        } else {
            // 奇數個 → 取中間的數
            cout << arr[arr.size() / 2] << endl;
        }
    }
}