第二題 螞蟻上樹找食物

問題描述
      一個有關螞蟻國度的古老傳說:從前從前,在一個不知名的島上有一個螞蟻國度,國度裡的螞蟻們一直是安居樂業,過著豐衣足食的日子。但,好景不常!受到國際地緣政治的影響,某一年螞蟻國的糧食極度短缺,引發了嚴重的通貨膨脹,物價異常的高漲,致使以往性格平順的螞蟻們開始焦躁、對立,各種亂象不斷地發生。另外一端,螞蟻女王在受到大臣們的輪番質詢後,終於意識到,再這樣發展下去,螞蟻們將因吃不飽飯,要造反啦!因此,女王召集螞蟻王國中最勇敢的勇士,前往森林,探索新的覓食良處。經過一番地毯式的探索,勇士們發現,森林裡有一顆奇妙的樹,這棵樹的每個節點上都存有大量的食物,只要把上面的食物都搬走,螞蟻王國的動亂危機就可以解除了!可惜的是,由於過去的螞蟻王國一直是風調雨順,豐衣足食,王國的勇士們因此缺乏了鍛練。牠們雖然可以爬上樹幹,卻無法將食物運回地上!幸好,這顆奇妙的樹的每個節點上剛好都有一個奇妙的降落裝置,可以把螞蟻勇士和食物一起直接送到地上去。
       不過,在犧牲了部分的螞蟻勇士後,螞蟻們終於發現這棵樹並不單純:假如沒有在正確的節點上降落,勇士們就會摔的粉身碎骨,食物也就無法完好的送回螞蟻王國。
       螞蟻勇士裡,有一隻特別機智的工程師螞蟻,牠發現了在每個節點上都有一個數字,假如從起點爬到降落點的路徑中,有經過比降落點數字還要大的節點,在當前降落點降落就會粉身碎骨。請幫螞蟻們算一算,這樣一來牠們最多可以在幾個節點降落,帶回在上面的食物呢?

附註:路徑的起點為直接與樹幹接壤的節點,每個節點最多延伸出兩個子節點。

參考資料
分層順序的二元樹陣列:
一個分層順序二元樹,每個節點最多只有兩個分支。由根節點到葉節點依順編號,依照每一層的順序並且由左到右依序編號。例如下圖完滿的四層二元樹,依序編完號記錄成{A,B,C,D,E,F,G,H,I,J,K,L,…}即為分層順序的二元樹陣列。

在此題若是該節點不存在則以 x 記錄,如下圖則記錄成{A,B,C,D,x,F,G,H,I,L,M}。I 與 L 中 間不存在的節點因為沒有上一層的節點不用記錄;而最後一個節點為 M 所以之後不存在 的節點不用再記錄。

輸入說明
      請輸入 1~63 個整數(整數範圍為 -99~99 )編號或 x,每個編號或 x 間以空格隔開。同一數字編號可出現超過一次。測資格式為分層順序的二元樹陣列,如長度為 7 的測資{a,b,c,d,x,e,d}中,a 為一顆樹的根節點,b、c 為 a 的左右子節點;d、x 則是 b 的左右子節點,x 代表 b 並沒有右子節點;e、d則是 c 的左右子節點

輸出說明
      輸出一個整數值,代表螞蟻們最多可以降落的節點數。

範例
輸入 輸出 範例
3 1 4 3 x -1 5 4
3 3 x 4 2
x