ZeroJudge D153: 智力測驗

在 Z 先生的牧場中,做一頭「光明的奶牛」不僅要稱體重,還需要考智力。一年一度的智力測驗要求極為嚴格,大約只有一半的奶牛可以通過。則於參加考試的奶牛數量眾多,因此如何劃定智力測驗「通過線」令 Z 先生頭痛不已,於是他請你解這一難題。

每隻參加測驗的奶牛都會得到一個分數 (從 0 到 100 的整數),將所有的成績按從高到低的順序排好後,處在中間位置的分數將會作為「參考分數」提供給 Z 先生,以便讓他決定「通過線」。如果參加測驗的奶牛的數目是偶數的話,處於中間的位置的分數將會有兩個,此時「參考分數」是其中較小的一個。

範例測資

範例輸入範例輸出
輸入第一行是一個整數 T (1 <= T <= 100),表示測試數據的總數。
每組測試數據的第一行是一個整數 N (1 <= N <= 40000),表示參加測驗的奶牛的數目。以下的 N 行依次給出 N 只奶牛測驗的成績,每行有一個 0 至 100 的正整數。
每組測試數據都輸出一個答案,輸出「參考分數」。
1
6
97
45
78
62
81
79
78

解題思路

使用 Sort 將分數排序完後,如果 N 是偶數,則輸出陣列中第 N/2-1 個位置的資料,反之是奇數的話就輸出陣列中第 N/2 個位置的資料。

範例程式碼-ZeroJudge D153: 智力測驗

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int T;
    cin >> T;
    for (int i = 0; i<T; i++) {
        int N, cow[50000] = {};
        cin >> N;
        for (int j = 0; j<N; j++) {
            cin >> cow[j];
        }
        sort(cow, cow+N);
        if (N % 2 == 0) cout << cow[N/2-1] << "\n";
        else cout << cow[N/2] << "\n";
    }
}

//ZeroJudge D153
//Dr. SeanXD

發佈留言