TopCoder

User's AC Ratio

100.0% (2/2)

Submission's AC Ratio

25.0% (4/16)

Tags

Description

$\large \color{red}{本題為互動題,請注意輸入輸出格式}$

今天笨笨和聰聰在玩一個卡牌遊戲,
遊戲是這樣的,他們會把卡牌排成一排並依序編號 $1$ ~ $n$,每張牌翻開會有數字 $0$ 或 $1$。
你只有一次地翻開機會,假設翻開編號 $i$ 的牌,數字為 $1$,你可以獲得 $i$ 分,否則你拿不到分。
一張牌只會被翻開一次。
笨笨非常想贏,所以找了他弟小笨去偷看牌上的數字是多少,
小笨並不知道規則,笨笨也不知道要怎麼跟他解釋,因為他太笨了,
但是笨笨可以透過通話問小笨編號為 $i$ 的牌上的數字為何。
可是小笨是個脾氣暴躁的人,你如果問他超過 $50$ 次他就會離家出走並且不給你繼續問,
請問笨笨要翻哪一張牌分數才會贏過聰聰?


對於所有測試資料:
$1 \le n \le 50$

Input Format

本題是互動題,請在程式碼的開頭引入標頭檔 #include "lib0003.h",程式碼請勿輸入或輸出任何東西,並且請勿實作 int main()函式。如果你這麼做可能會$\color{red}{導致各種不可預期}$的結果。


請你實作以下函式:
int sol(int n):Judge 會從你的程式呼叫此函式,你要實作此函式並且回傳笨笨要翻哪一個編號的牌


你可以呼叫以下函式:
bool ask(int x):呼叫此函式可以問笨笨第 $x$ 張牌上的數字為 $0$ 還是 $1$,最多可呼叫 $50$ 次,並且要滿足 $1 \le x \le n$,否則你會獲得 $\color{red}{Wrong\ Answer}$

Output Format

本題無輸出,請實作 int sol(int n) 回傳答案

Hints

以下是一份符合格式但是會回傳錯誤答案的程式碼
#include "lib0003.h"
bool ask(int x);
int sol(int n){
if(ask(1)) return 1;
return 2;
}

Problem Source

Subtasks

No. Testdata Range Constraints Score
1 0~19 題目範圍限制 100

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 1000 65536 65536 1
1 1000 65536 65536 1
2 1000 65536 65536 1
3 1000 65536 65536 1
4 1000 65536 65536 1
5 1000 65536 65536 1
6 1000 65536 65536 1
7 1000 65536 65536 1
8 1000 65536 65536 1
9 1000 65536 65536 1
10 1000 65536 65536 1
11 1000 65536 65536 1
12 1000 65536 65536 1
13 1000 65536 65536 1
14 1000 65536 65536 1
15 1000 65536 65536 1
16 1000 65536 65536 1
17 1000 65536 65536 1
18 1000 65536 65536 1
19 1000 65536 65536 1