本題為互動題,僅限使用 C/C++ 作答
Balualan 是一個充滿著魔法的世界,有許多的魔力球散落在這個世界中,
每個魔力球都有自己的魔力點,一顆魔力球擁有越多的魔力點,
那麼這顆魔力球就越強大,反之擁有越少的魔力點,這顆魔力球就越弱小。
但是某一天 BB 大魔法師發現如果將兩顆魔力球靠在一起,
使之產生「魔力共振」,可以激發出更強大的力量,
而這個力量的大小依這兩顆魔力球的魔力點差值而定,
當兩顆魔力球的魔力點差值越大時,這兩顆產生的共振強度就越強,
於是 BB 大魔法師就想要得知從他手中持有的魔力球中,最大能產生多強的共振。
但是平常用肉眼無法得知一顆魔力球的魔力點,只能通過魔力碰撞儀來得知,
魔力碰撞儀的用法是將兩顆魔力球分別置入碰撞儀的 Uth 槽跟 Bt 槽,碰撞儀會顯示出哪個槽中的魔力球其魔力點較多。
現在 BB 大魔法師有 $N$ 顆魔力球,其編號從 $1$ 到 $N$ ,請問最小與最大的魔力球編號分別是哪個。
本題沒有輸入,若你輸入了任何東西,可能會導致各種不可預期的結果。
請記得 #include "lib0043.h"
,以下幾個是你可以使用的函式:
void MagicBalls(int *N)
:在程式一開始請呼叫此函數來得知 BB 大魔法師有多少顆魔力球,保證 $2\leq N\leq10^ 5$ 。
int Collision(int Uth, int Bt)
:傳入兩個變數 $Uth$ 與 $Bt$ ,代表將兩顆編號不同的魔力球分別放在 Uth 槽跟 Bt 槽,當 Bt 槽的魔力球魔力點數較多時,這個函式會回傳 $0$ ,反之會回傳 $1$ 。因為碰撞時會產生巨大能量,容易造成周遭空間不穩定,因此你最多只能使用 $\lfloor 1.5N\rfloor$ 次碰撞儀,不然空間會扭曲變形,你就會得到一個 WA 。當兩個槽的魔力球編號相同或是沒有這個編號的魔力球時,這個碰撞儀會爆炸,然後你也會得到一個 WA 。
void Choose(int MinBall, int MaxBall)
:傳入兩個變數 $MinBall,MaxBall\ (MinBall\neq Maxball)$ ,代表你認為是魔力最少的魔力球編號與魔力最多的魔力球編號,這個函式會自動幫你結束程式,若有多顆魔力球同時是最少魔力或是最多魔力,選擇任一組即可。
本題沒有輸出,若你輸出了任何東西,你將會得到一個 WA 。
這裡提供一份範例標頭檔與可以 AC 子任務一的範例程式碼可以使用。
若在本機使用這份標頭檔與這份程式碼執行時,輸入格式如下:
其中 $N$ 如題目所述, $a_i\leq10^ 9$ ,第 $i$ 個數字代表第 $i$ 顆魔力球的點數。
如果你的程式被評為 WA,範例評分程式會輸出 "Wrong Answer: MSG",其中 MSG 格式與意義如下:
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~1 | $N=2$ | 2 |
2 | 0~9 | 可以使用 $2N$ 次碰撞儀且不會造成空間扭曲 | 18 |
3 | 0~17 | 無特別限制 | 80 |
No. | Time Limit (ms) | Memory Limit (KiB) | Output Limit (KiB) | Subtasks |
---|---|---|---|---|
0 | 1000 | 65536 | 65536 | |
1 | 1000 | 65536 | 65536 | |
2 | 1000 | 65536 | 65536 | |
3 | 1000 | 65536 | 65536 | |
4 | 1000 | 65536 | 65536 | |
5 | 1000 | 65536 | 65536 | |
6 | 1000 | 65536 | 65536 | |
7 | 1000 | 65536 | 65536 | |
8 | 1000 | 65536 | 65536 | |
9 | 1000 | 65536 | 65536 | |
10 | 1000 | 65536 | 65536 | |
11 | 1000 | 65536 | 65536 | |
12 | 1000 | 65536 | 65536 | |
13 | 1000 | 65536 | 65536 | |
14 | 1000 | 65536 | 65536 | |
15 | 1000 | 65536 | 65536 | |
16 | 1000 | 65536 | 65536 | |
17 | 1000 | 65536 | 65536 |