本題為互動題,限用 C++ 作答。你可以在這裡找到範例實作以及範例評分程式,詳細注意事項以及常見問題請參考 Hints。
踢歐埃國是這次國際資訊奧林匹克競賽(國際資訊奧林匹克是結合體育與資訊的國際盛會)的舉辦國。今天,最後一場比賽結束了,然而主辦方遇到了技術問題沒辦法即時公佈記分板。
這次國際賽總共有
然而記者在這一天是無法直接與參賽者互動的,因此你決定要用一個較為隱密的方法猜測:你發現一份外界預測的名單收到的負評數量就會剛剛好是被低估名次的人數,正式的說,假設編號為
儘管有這樣的方案繞過主辦方的通訊限制,你需要跟主辦方修理記分板的時間賽跑。考慮到時間以及參賽者的耐心,你估計你的猜測次數不能超過門檻
你的程式需要在一開始使用前置處理器引入 lib0058.h
,請注意在本地測試時你需要改為引入 reporter.h
,詳細請參考範例實作。
你需要完成以下的函式:
std::vector<int> get_ranking(int N);
get_ranking
只會被呼叫剛好 N
為題目中的參數 你可以呼叫以下函式:
int get_downvote(std::vector<int> g);
g
必須為一個長度為 get_downvote
不得被呼叫超過 如果任意一個條件沒有被滿足,你的程式會被判斷為 Wrong Answer 並且獲得 0 分,否則,你的程式將依照 Scoring 中的敘述評分。
{0, 1, 3, 2}
,一個被判斷為 Accepted 的範例互動狀況如下:
評測程式端 | 參賽者程式端 |
---|---|
呼叫 get_ranking(4) 。 | |
呼叫 get_downvote({0, 1, 2, 3}) | |
回傳 1 。 | |
呼叫 get_downvote({0, 1, 3, 2}) | |
回傳 0 。 | |
回傳 {0, 1, 3, 2} 。 |
在第一次查詢中,僅有編號為
get_downvote
的次數為
範例評分程式以下列方式輸入:
範例評分程式以下列方式輸出:
如果你的程式被判斷為 Accepted,範例評分程式會輸出 Accepted: q
,其中 q
為呼叫 get_downvote
的次數。
如果你的程式被判斷為 Wrong Answer,範例評分程式會輸出 Wrong Answer: MSG
,其中 MSG
以及其代表的意思為以下列表的其中一個:
invalid guess
:猜測的排名不合法,也就是說,g
的長度不是 g
當中有相同的參賽者編號或者 g
當中的參賽者編號超出 invalid answer
:回傳的排名不合法,也就是說,回傳的排名長度不是 too many queries
:猜測的次數超過限制。not correct
:回傳的排名不正確。如果有多個原因,範例評分程式只會輸出任何一個。
由於 Windows Defender 以及各種奇怪東西的限制,本題的範例編譯指令不提供 Windows 批次檔。編譯及測試教學請參考下列說明。
reporter
,請直接用命令列執行該檔案。-static
參數移除,其餘與 Linux 相同。#include "grader.cpp"
,並且以單一檔案的編譯執行方式測試,請注意這一行上傳時需要刪除,否則你會獲得一個 Compile Error。IOICamp 2024 Day6 pK
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0 | 範例測資 | 0 |
2 | 0~44 | 無額外限制 | 100 |