時間限制 1000 ms ・ 記憶體限制 512 MB
題目描述
n 位選手各有戰力 S 與應變力 T,並有指定初始排列。每輪依排列順序兩兩對戰,若人數為奇數,最後一位直接晉級本輪勝利組,能力不變。 設一場比賽中先出現者能力為 (a,b),後出現者為 (c,d)。比較 ab 與 cd,較大者獲勝,相等時先出現者勝。假設勝者原能力為 (u,v),敗者原能力為 (x,y),本場後同時更新:
- 勝者變為 (u+floor(xy/(2v)), v+floor(xy/(2u)))。
- 敗者變為 (x+floor(x/2), y+floor(y/2)),敗場數加 1。 同一輪結束後,勝利組依原排列順序排在前面,失敗組也維持原順序排在後面;已累計輸 m 次的人移除。持續至剩一人,求其編號。所有更新式都使用該場更新前的數值。
輸入格式
第一行為 n、m,2 ≤ n ≤ 1000,1 ≤ m ≤ 5。第二行 n 個整數為依編號的初始 S,第三行為初始 T,皆介於 1 與 100。第四行為 1 到 n 的排列。過程中的能力乘積保證不超過 2^60,可能超過 32 位元範圍。
輸出格式
輸出最後勝者編號。
範例測資
範例輸入 1
4 1 4 2 5 3 2 5 1 5 1 2 3 4
範例輸出 1
4
範例輸入 2
4 5 4 1 5 3 6 5 1 6 4 1 3 2
範例輸出 2
1
請先登入後再提交程式碼
討論與題解
載入討論區…