為了做出最好吃的蘋果派,需要做出些努力。
現在有 N 個蘋果派(編號 0, 1, …, N-1)需要通過品管測驗,每個蘋果派分別會有 K 個人試吃評分。
為了避免偏頗值,每個蘋果派皆會將 K 個評分中最高分和最低分捨去,也就是只剩下剩餘 K-2 個成績。
只有當這 K-2 個成績的平均值大於或等於 T 值時,我們才認為他是個及格的蘋果派。
請協助撰寫程式,完成蘋果派的品管測驗。
範例測資
範例輸入 | 範例輸出 |
---|---|
第一行有三個正整數 N, K, T ( 3 ≤ N, K, T ≤ 1000 ) 代表總共有 N 個蘋果派,每個蘋果派各會有 K 個人評分 以及去掉最高、最低分後的平均需大於等於的及格門檻 T 值 接下來依序有 N 行,每行有 K 個正整數 xi ( 1 ≤ xi ≤ 1000 ) 代表該蘋果派被評的分數,其中同個蘋果派的評分不會重複 即對於同個蘋果派保證所有 xi ≠ xj | 對於及格的蘋果派,編號小至大依序印出 (初始編號為 0),兩兩間需換行 若不存在及格的蘋果派,則請印出 「A is for apple.」 |
7 4 40 1 2 4 8 8 5 2 3 3 4 1 8 7 6 1 5 1 8 4 7 3 2 8 6 1 3 2 7 | A is for apple. |
9 7 10 9 15 13 2 6 3 12 12 14 4 5 3 7 19 10 8 4 14 6 18 19 11 17 1 19 4 6 3 8 13 14 16 12 3 17 4 9 8 3 19 17 7 19 2 12 4 1 15 8 11 16 4 12 1 5 19 1 11 9 6 4 19 15 | 2 4 |
解題思路
在收資料的時候一邊判斷最大值與最小值,並且計算所有成績的總和。之後將總和 -= 最大值跟最小值,並且計算平均值,這邊可以使用 float/double 來計算平均值。
可以設定一個布林值 ok 預設為 false,如果有合格的蘋果派則將 ok 設為 true。在所有迴圈結束之後,如果 ok 依舊為 false,則輸出「A is for apple.」。
範例程式碼-ZeroJudge G307: 為了好吃的蘋果派 (Apple Pie)
#include <iostream>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N, K, T;
cin >> N >> K >> T;
bool ok = false;
for (int i = 0; i<N; i++) {
int max = -999, min = 99999, sum = 0;
for (int j = 0; j<K; j++) {
int tmp;
cin >> tmp;
sum += tmp;
if (tmp > max) max = tmp;
if (tmp < min) min = tmp;
}
sum -= max;
sum -= min;
const double average = double(sum)/(K-2);
if (average >= T) {
cout << i << "\n";
ok = true;
}
}
if (!ok) cout << "A is for apple.\n";
}
//ZeroJudge G307
//Dr. SeanXD