在 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