TopCoder

Adrien Wu
$ \begin{align} AC \times 2^9 \\ \text{New TIOJ ?} \end{align} $

User's AC Ratio

83.3% (5/6)

Submission's AC Ratio

5.1% (8/157)

Tags

Description

胖胖天自從上次吃了惡魔果實後,力量倍增,但是越往後走,則路途中的怪越來越強,等級越來越高。

胖胖天的連續技已經漸漸不管用了!!!

不過幸運的是,最近他剛好碰到了一位飢餓的魔導士。

因為胖胖天贈送的一根熱狗,而使得魔導士重新恢復生機,因此魔導士教了他如何搜集自然能量。而這種自然能量,剛好又比一般的能量要來強上好幾倍。
能量越多就越能拿來攻擊敵人,能量越少則只能自己拿來補充血量(因為能量少便能使自己內心平靜 以達到休憩的目的)。

不過很懶的他,決定叫他的影分身去蒐集能量,自己在船上休息。

但是基於影分身有原始胖胖天的性格,所以許多胖胖天都會派自己的影分身去蒐集能量,僅有少數影分身會真正去蒐集到能量。

而胖胖天有兩種(跟思思有三種類似): 一種是放出型胖胖天,一種是補血型胖胖天

兩種胖胖天的能力有所不同:

像補血型就是希望能蒐集盡量小的能量,以幫助自己補血。
放出型就是希望能夠蒐集盡量大的能量,以攻擊敵人。

而補血型的影分身一定是放出型。
放出型的影分身一定是補血型。

但是兩種型別都可以蒐集自然能量,而我們其實可以把這種真的會笨笨的去蒐集能量的叫蒐集型。

我們可以知道 每隻非蒐集型有的能量將是所有自己的影分身有的能量中的最大或最小值(看這隻是哪種胖胖天)。

不過因為胖胖天實在太貪玩了,所以遲遲沒有將能量送到最原始胖胖天手上。

所以最原始的胖胖天請你幫慢慢詢問出,他最後能得到多少能量。


這是一個互動題,請你先引入標頭檔#include "lib1542.h",然後就可以用這些函數了!

  • char Initialize():程式一開始先呼叫這個函式,並傳回一數0或1。0代表原始胖胖天是補血型,1代表原始胖胖天是放出型。

  • int Ask(int *op):請由*op判斷下列三種狀況:

     1.*op=0 代表你目前遇到的這個胖胖天為蒐集型,只有這時候Ask函數回傳的値才有意義,代表此胖胖天蒐集到的能量大小(你可以假設這個值不超過109)。

     2.*op=1 代表你目前遇到的這個胖胖天為非蒐集型,且他還有影分身沒問過,並且從他的影分身中的挑一隻沒問過的,並且走向那隻胖胖天。

     3.*op=2 代表你目前遇到的這個胖胖天為非蒐集型,且其影分身都問過了。(注意: 並不會自動往回走。)

  • void GoBackward():向上往回走一層,也就是回到目前這隻胖胖天的主人那裡去。(注意: 假如你此時在原始胖胖天那,請不要輕易嘗試呼叫此函式"超過一次",以免發生無法預期的錯誤。)

  • void Report(int ans):回傳答案給原始胖胖天,程式會自動關閉。

注意!!倘若詢問次數超過某神秘上限,你將會被所有胖胖天唾棄,並得到WA。

Input Format

[本題無須輸入]

Output Format

[本題無須輸出]

Hints


※2009/7/15 測資圖修正 by skyly
※2009/7/16 更改時限 by math120908
※2009/7/29 修正標頭檔 by math120908
※2019/2/26 修正標頭檔 by adrien1018

Problem Source

原TIOJ1542 / Prolem Setter: math120908

Subtasks

No. Testdata Range 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 2500 131072 262144 1
1 2500 131072 262144 2
2 2500 131072 262144 3
3 2500 131072 262144 4
4 2500 131072 262144 5
5 2500 131072 262144 6
6 2500 131072 262144 7
7 2500 131072 262144 8
8 2500 131072 262144 9
9 2500 131072 262144 10