開啟章節選單

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