開啟章節選單
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; } } }