小暄是 2023 資訊之芽的北區 PM。最近她總是愁眉苦臉,因為今年的資芽即將進入第二階段。除了要催促 Ruby 製作解題簡報和出題,還要計算班上每個學員的成績並檢查是否有作弊行為,才能決定學員是否進入第二階段。
Ruby 為了減輕小暄的負擔,決定用 C++ 開發一個成績系統。這個成績系統能夠根據輸入的學員資料,自動計算成績並決定學員是否有資格進入第二階段。然而,Ruby 是一個又懶又笨的講師,除了翹班和遲交講義,什麼都不會。因此,他決定將成績系統的重要邏輯出成作業,給聰明的資芽學員實作。這樣一來,Ruby 既不用花費心力實作系統,又可以討好 PM,試圖擺脫被扣薪水的命運。
(以下內容純屬虛構,若有雷同,純屬巧合)
「無任何作弊且未自首紀錄」的白話文為「沒有任何一次作業被發現有作弊行為,而且沒有自首」。也就是說,如果被發現作弊但有自首,僅處以該次作業零分,學員二階資格不會因此被剝奪。
為了使程式碼更簡潔,Ruby 為系統定義了三個資料結構,分別為 Plagiarism
、Result
、Student
,依序代表作弊調查報告、作業結果以及學生。
Student
包含了一個長度為 24 的 Result
陣列,代表該學員的 24 次回家作業結果。isWillingToAdvance
則代表了該學員是否有進入二階段的意願。
Result
包含了isAccepted
,代表該次作業是否繳交並得到 AC。isLate
代表該次作業是否遲交。Plagiarism
則代表該次作業的作弊調查報告。
Plagiarism
包含了 isDetected
,代表是否偵測到作弊行為。isAdmitted
則代表學員是否自首作弊行為。
由於 Ruby 已事先將系統架構完成,你只需幫助他實作系統的主要邏輯,也就是依據題目所定義進入二階段的要求,判斷每位學員是否具備進入二階段資格。
請你實作
bool willAdvance(const Student& student);
請記得在你的程式開頭加上 #include "lib0561.h"
lib0561.h
的內容如下
struct Plagiarism {
bool isDetected;
bool isAdmitted;
};
struct Result {
bool isAccepted;
bool isLate;
Plagiarism plagiarism;
};
struct Student {
Result assignments[24];
bool isWillingToAdvance;
};
bool willAdvance(const Student& student);
你繳交的程式碼被將被放置的位置標示於以下
#include <iostream>
#include "lib0561.h"
using namespace std;
int main() {
Student students[50];
/* 讀取學生資料 */
/* Reads Student Data */
for (int i = 0; i < 50; ++i){
cout << (willAdvance(students[i]) ? 1 : 0) << ' ';
}
cout << endl;
return 0;
}
/* 你的程式碼會被貼上於此 */
/* Your code will be pasted here */
你所實作的函式不需要讀取輸入。
你所實作的函式不需要輸出,只需要回傳一個 bool。
NEOJ Problem 878
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0 | 10 | |
2 | 1 | 10 | |
3 | 2 | 10 | |
4 | 3 | 10 | |
5 | 4 | 10 | |
6 | 5 | 10 | |
7 | 6 | 10 | |
8 | 7 | 10 | |
9 | 8 | 10 | |
10 | 9 | 10 |