串串最近迷上了一款遊戲,故事講述一群少年簽訂契約後成為一中生,對抗邪惡組織的熱血劇情。總之這個遊戲的戰鬥機制如下:
每一關會有0~9個敵人,位於一個3*3的九宮格內,每個格子最多只有一個敵人。每個敵人都有一個血量值,當血量值達到0時,敵人就視為被消滅了。只要玩家能在一定回合數內消滅所有敵人,就可以過關。
玩家在關卡開始時會選一位「英雄」,該英雄會有兩個數值:攻擊力(ATK)和魔法傷害(MH),這兩個數值依英雄本身的性質而定,同時關卡開始時也會有兩個數值:充能(C)和魔力(MP),這兩個數值一開始皆為0。
每回合開始時,玩家可以瞄準一個尚未被消滅的敵人(以下簡稱「目標」)並從以下三個動作中選一個執行。
爆破(Blast):又分為橫向爆破與縱向爆破,對該目標所在的行(縱向)或是列(橫向)上的所有敵人造成$ ATK*(1+0.2*C) $點傷害(向下取整數),C歸零。
速攻(Accele):對目標造成 $ ATK $點傷害,同時MP增加 $ 20 + 2*C $,C歸零。
充能(Charge):對目標造成 $ ATK $點傷害,MP增加2,C增加1。
此外,當MP達到100時,該回合會被動追加一次魔法攻擊(Magia),此時MP歸零,無論原本MP為多少。
魔法攻擊(Magia):對所有敵人造成$ MH $點傷害。
聽完這些後,串串覺得真是複雜,於是他寫了一個自動排程系統,運作方式如下:
有一個預先計算好的字串S,系統每回合會依序執行其中的指令('C' = Charge, 'A' = Accele, 'B' = Blast(橫向), 'b' = Blast(縱向)),而系統會選擇最右邊且尚未被消滅的敵人作為目標,若這樣的敵人有數個,則選擇最上面的敵人。
你的目標是計算串串的系統需要幾回合才能破關。
第一行是一個字串S,表示系統的指令排程。
($0 < 長度 <= 100$)
再來有2個正整數($ <= 100000$),表示所選英雄的 ATK、MP。
最後有3*3的正整數列($ <= 1000000$),表示敵人的血量值,如果該值為0表示那個格子上沒有敵人。
輸出串串的系統需要幾回合才能破關,若破不了關(即排程跑完還有敵人未被消滅)輸出-1。
// 1 CBAbAACCB 5000 10000 0 10000 5000 5000 5000 5000 0 5000 0 // 2 AAAAAABBBBB 1 9000 8888 8888 8888 8888 8888 8888 8888 8888 8888 // 3 CCCCCBbBbBb 100000 100000 0 0 0 0 1000000 0 0 0 0 // 4 CACCABCCCAAbbBB 1 9000 8888 8888 8888 8888 8888 8888 8888 8888 8888 // 5 bbbbbbbbbb 1 1 0 0 0 0 0 0 0 0 0
// 1 4 // 2 5 // 3 9 // 4 11 // 5 0
對於前10%的測資:只有一個敵人且只有指令"B"
對於前30%的測資:沒有指令"C"