paiza 問題「じゃんけんの手の出し方」

実験でpyてょnをやったので、1年ぶりくらいにpaizaを解いた。深夜にやることではない。バカアホ全探索の巻。まあ全探索が正解らしいが。問題は↓↓
paiza.jp

デバッグ用のいろいろを省いた提出用版。各データ0.02秒で処理できたはず。

# coding: utf-8
# Your code here!

s = input().split()
times = int(s[0])
finger = int(s[1])

win = 0
G = 0
C = 0
P = 0

order = list(input())

for i in range(times):
    if order[i] == 'C':
        C += 1
    elif order[i] == 'G':
        G += 1
    elif order[i] == 'P':
        P += 1

temp_win = 0
for i in range(min(times , int(finger/5) ) + 1): 
    if (finger-i*5)%2 == 0 and times >= (i + (finger - i*5)/2): 
        myP = i
        myC = (finger - i*5)/2
        myG = times - myC - myP
        i_win = min(myP , G) + min(myC , P) + min(myG , C)
        temp_win = max(i_win , temp_win)

win += temp_win 
print(int(win))

こっちはデバッグ用。めちゃめちゃprintします。見にくいわ。

s = input().split()
times = int(s[0]) #じゃんけんの回数
finger = int(s[1]) #指の本数
#自分の出すGCPの回数
myG=0 
myC=0
myP=0
#自分の出したGCPの数の最終結果(デバッグ用)
res_myP = 0
res_myC = 0

order = list(input()) #相手の出すGCPをリストで格納
win = 0 #自分の勝利数
#相手の出すGCPの数
G = 0
C = 0
P = 0

print(order)#確認用

#相手の出すGCPをカウント
for i in range(times):
    if order[i] == 'C':
        C += 1
    elif order[i] == 'G':
        G += 1
    elif order[i] == 'P':
        P += 1

print(G) #確認用
print(C)
print(P)

#fingerをmyPとmyCにどれだけ割り振れるかを考える?
#temp_winが最大になる手の出し方を考える。
temp_win = 0 
for i in range(min(times , int(finger/5) ) + 1): #myPをi回出す場合を考える。
    print("the i is "+str(i))
    if (finger-i*5)%2 == 0 and times >= (i + (finger - i*5)/2): #myPをi回出して、残りのfingerが2で割り切れるか?そして回数制限は大丈夫か?
        #自分の出すGCPの回数を求める
        myP = i 
        myC = (finger - i*5)/2
        myG = times - myC - myP
        
        #myPがiの時の勝利回数i_winを求める
        i_win = min(myP , G) + min(myC , P) + min(myG , C)
        
        #確認用
        print("  myP is "+str(myP))
        print("  myC is "+str(myC))
        print("  myG is "+str(myG))
        print("  i_win is "+str(i_win))
        
        #temp_win = max(i_win , temp_win)
        #i_win と temp_win の大小比較。temp_winが更新されたらres_myP,Cも変更
        if temp_win < i_win :
            temp_win = i_win 
            res_myP = myP #確認用
            res_myC = myC #確認用
            print("    temp_win is changed") #確認用
    else :#確認用
        print("  skipped") #確認用
        
print("") #確認用
win += temp_win #winの最終結果を求める。
print("win is ...") #確認用
print(win) #出力
print("check is ...")#Fingerの数と出した手の数が合っているか確認
print(finger==(res_myC*2 + res_myP*5))  #確認用