TopCoder

User's AC Ratio

100.0% (2/2)

Submission's AC Ratio

66.7% (2/3)

Tags

Description

背景

小暄是 2023 資訊之芽的北區 PM。最近她總是愁眉苦臉,因為今年的資芽即將進入第二階段。除了要催促 Ruby 製作解題簡報和出題,還要計算班上每個學員的成績並檢查是否有作弊行為,才能決定學員是否進入第二階段。

Ruby 為了減輕小暄的負擔,決定用 C++ 開發一個成績系統。這個成績系統能夠根據輸入的學員資料,自動計算成績並決定學員是否有資格進入第二階段。然而,Ruby 是一個又懶又笨的講師,除了翹班和遲交講義,什麼都不會。因此,他決定將成績系統的重要邏輯出成作業,給聰明的資芽學員實作。這樣一來,Ruby 既不用花費心力實作系統,又可以討好 PM,試圖擺脫被扣薪水的命運。

二階資格

(以下內容純屬虛構,若有雷同,純屬巧合)

2023 資訊之芽學員進入二階段的要求如下:

  1. 回家作業總分達 32 分(含)以上。
  2. 無任何作弊且未自首紀錄。
  3. 有進入二階段之意願。

「無任何作弊且未自首紀錄」的白話文為「沒有任何一次作業被發現有作弊行為,而且沒有自首」。也就是說,如果被發現作弊但有自首,僅處以該次作業零分,學員二階資格不會因此被剝奪。

單次回家作業成機計算方式如下:

  1. 期限內繳交並取得 AC 者,得 2 分。
  2. 遲到繳交並取得 AC 者,得 1 分。
  3. 作弊但自首者,得 0 分。 回家作業共 24 次,因此滿分為 48 分。

系統架構

為了使程式碼更簡潔,Ruby 為系統定義了三個資料結構,分別為 PlagiarismResultStudent,依序代表作弊調查報告、作業結果以及學生。

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 */

Input Format

你所實作的函式不需要讀取輸入。

Output Format

你所實作的函式不需要輸出,只需要回傳一個 bool。

Hints

Problem Source

NEOJ Problem 878

Subtasks

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

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 2000 655360 65536 1
1 2000 655360 65536 2
2 2000 655360 65536 3
3 2000 655360 65536 4
4 2000 655360 65536 5
5 2000 655360 65536 6
6 2000 655360 65536 7
7 2000 655360 65536 8
8 2000 655360 65536 9
9 2000 655360 65536 10