---
# System prepended metadata

title: APCS 2016年3月 實作1 - 成績指標

---

# 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)
