開啟章節選單

10107 What is the Median?

題目敘述

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

輸入說明

輸入包含了N個(N<10000)的整數。

輸出說明

對每一個輸入,請輸出到現在為止已輸入的數的中間數。

解題思路

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

程式碼

#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;
        }
    }
}