本題為 Two Steps 題,限用 C++ 作答。你可以在這裡找到範例實作以及範例評分程式,詳細注意事項以及常見問題請參考 Hints。
「不要再 GO 了!我不知道你們在說什麼!」最近,8e7 發現他身邊的人都在看 MyGO!!!!!,但是他沒看過,所以他一直看不懂大家傳的那些梗圖。什麼「那傢伙竟然敢無視燈」、「從來不覺得打歡樂團體賽開心過」、「為什麼要演奏線段樹」之類的,他毫無頭緒。反正,以下是他亂寫的題敘。
千早愛音認為,展現自我的方式應該要多元一點,所以她正在學習溝通的方式。有一天,她、波路特石、跟 8e7 在進行溝通練習。
首先,8e7 會先給愛音一個整數 $x$,其中 $0 \le x < 2 ^ {30} $ 。接下來,愛音會寫給波路特石一個由 G 和 O 兩種字元組成的訊息。8e7 會攔截這個訊息,而因為 8e7 不喜歡 GO,因此他有可能會將訊息中的 GO 反轉變成 OG。具體來說,8e7 會做以下的操作至多 $k \le 3$ 次:
GO 的子字串,並將他反轉成為 OG。接下來,波路特石會收到這個經過 8e7 修改的訊息,而他的目標就是要正確的解讀出 $x$ 的值。請幫助愛音和波路特石找到溝通的方法。

詳細細節與評分方式請見後續段落。
你的程式需要在一開始使用前置處理器引入 lib0927.h,詳細請參考範例實作。
你需要完成以下的三個函式,詳細執行流程請參考後面的內容:
void init();
init 會被呼叫恰兩次。std::string Anon(int x, int k);
Anon 會被呼叫恰 $T$ 次。8e7 至多會進行幾次交換操作。G, O 字元組成的字串,且字串長度不得超過 $120$。int Baluteshih(std::string message, int k);
Baluteshih 會被呼叫恰 $T$ 次。message 是一個經過 Anon(x, k) 回傳的字串再經過 8e7 修改後的結果。8e7 至多會進行幾次交換操作。Anon(x, k) 傳入的 $x$ 相同。如果任意一個條件沒有被滿足,你的程式會被判斷為 Wrong Answer 並且獲得 0 分,否則,你的程式將依照 Scoring 中的敘述評分。
而評測系統會用以下執行的過程:
init(),然後呼叫 $T$ 次 Anon(),每次呼叫的參數分別為 $x_1, x_2, \dots, x_T$,而對應的訊息為 $m_1, m_2, \dots, m_T$。init(),然後呼叫 $T$ 次 Baluteshih(),每次呼叫的參數為 $m_1, m_2, \dots, m_T$,而回傳的結果為 $y_1, y_2, \dots, y_T$。
 
| 評測程式端 | 參賽者程式端 | 
|---|---|
| 系統第一次執行參賽者的程式。 | |
呼叫 init()。 |     |
呼叫 Anon(4, 3)。 |     |
回傳 GOGO。 |   |
呼叫 Anon(6, 3)。 |   |
回傳 GOGOGO。 |   |
系統將 GOGO 交換成 OOGG。 |   |
系統將 GOGOGO 交換成 GOGOGO。 |  |
| 系統第二次執行參賽者的程式。 | |
呼叫 init()。 |   |
呼叫 Baluteshih(OOGG, 3)。 |   |
回傳 4。 |   |
呼叫 Baluteshih(GOGOGO, 3)。 |  |
回傳 6。 |   
Anon 回傳的字串長度最大值。你的分數會是該子題的分數乘上倍數 $p$,其中
範例評分程式以下列方式輸入:
其中 $x_i$ 為第 $i$ 次呼叫 Anon 的引數 $x$。
範例評分程式以下列方式輸出:
如果你的程式被判斷為 Accepted,範例評分程式會輸出 Accepted: L,其中 L 為 Anon 回傳的字串長度最大值。
如果你的程式被判斷為 Wrong Answer,範例評分程式會輸出 Wrong Answer: MSG,其中 MSG 以及其代表的意思為以下列表的其中一個:
Wrong charset: 回傳的字串包含 G, O 以外的字元。Too long: 回傳的字串長度超過 $120$。Not correct: 回傳的答案錯誤。如果有多個原因,範例評分程式只會輸出任何一個。
請注意,範例評分程式的評測方法與實際評分程式不同,實際評測系統會用在 Implementation Details 欄位敘述的方法執行。
另外,範例評分程式會將交換的過程好好的輸出,請好好運用。
2 3 4 6
由於 Windows Defender 以及各種奇怪東西的限制,本題的範例編譯指令不提供 Windows 批次檔。編譯及測試教學請參考下列說明。
nogo.exe,請直接用命令列執行該檔案。-static 參數移除,其餘與 Linux 相同。#include "grader.cpp",並且以單一檔案的編譯執行方式測試,請注意這一行上傳時需要刪除,否則你會獲得一個 Compile Error。| No. | Testdata Range | Constraints | Score | 
|---|---|---|---|
| 1 | 0 | 範例測資 | 0 | 
| 2 | 1~14 | $k=1$ | 25 | 
| 3 | 0~31 | 無額外限制 | 75 |