# APCS 2016年3月 實作1 - 成績指標 ## 題目敘述 一次考試中,於所有及格學生中獲取最低分數者最為幸運,反之,於所有不及格同學中,獲取最高分數者,可以說是最為不幸,而此二種分數,可以視為成績指標。 請你設計一支程式,讀入全班成績(人數不固定),請對所有分數進行排序,並分別找出不及格中最高分數,以及及格中最低分數。 當找不到最低及格分數,表示對於本次考試而言,這是一個不幸之班級,此時請你印出「worst case」;反之,當找不到最高不及格分數時,請你印出「best case」。 ( 註:假設及格分數為 60 )。 ### 輸入說明 第一行輸入學生人數,第二行為各學生分數(0~100 間),分數與分數之間以一個空白間格。 每一筆測資的學生人數為 1~20 的整數。 ### 輸出說明 每筆測資輸出三行。 第一行由小而大印出所有成績,兩數字之間以一個空白間格,最後一個數字後無空白; 第二行印出最高不及格分數,如果全數及格時,於此行印出 best case ; 第三行印出最低及格分數,如果全數不及格時,於此行印出 worst case 。 ![](https://i.imgur.com/iRpfVRU.png =50%x) ## 程式碼 ```cpp= #include <bits/stdc++.h> using namespace std; int main(){ int num; cin >> num; vector<int> data(num); for(int i=0; i<num; i++){ cin >> data[i]; } sort(data.begin(), data.end()); for(int i=0; i<num; i++){ cout << data[i] << " "; } cout << endl; int above_min = 101; int below_max = -1; for(int i=0; i<num; i++){ if(data[i] >= 60){ if(data[i] < above_min){ above_min = data[i]; } }else{ if(data[i] > below_max){ below_max = data[i]; } } } if(above_min == 101 && below_max != -1){ cout << below_max << endl; cout << "worst case" << endl; }else if(above_min != 101 && below_max == -1){ cout << "best case" << endl; cout << above_min << endl; }else{ cout << below_max << endl; cout << above_min << endl; } } ``` ## 執行結果 ![](https://i.imgur.com/JX4rR13.png) ## 資料來源 [https://zerojudge.tw/ShowProblem?problemid=b964](https://zerojudge.tw/ShowProblem?problemid=b964)