結果

問題 No.252 "良問"(良問とは言っていない (2)
ユーザー tnoda_tnoda_
提出日時 2015-08-31 15:00:10
言語 PyPy2
(7.3.15)
結果
AC  
実行時間 316 ms / 2,000 ms
コード長 914 bytes
コンパイル時間 1,123 ms
コンパイル使用メモリ 76,708 KB
実行使用メモリ 118,420 KB
最終ジャッジ日時 2024-07-18 16:53:28
合計ジャッジ時間 3,789 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 306 ms
79,144 KB
testcase_01 AC 316 ms
78,864 KB
testcase_02 AC 259 ms
118,420 KB
testcase_03 AC 252 ms
117,748 KB
testcase_04 AC 304 ms
117,820 KB
testcase_05 AC 304 ms
117,940 KB
testcase_06 AC 72 ms
77,588 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

def solve():
    S = raw_input()
    L = len(S)
    # sfp
    fp = [0] * L
    for i in xrange(L-6):
        flag = True
        for j in xrange(7):
            if S[i+j] != "problem"[j]:
                flag = False
        if flag:
            fp[i+6] += 1
    sfp = [0] * L
    for i in xrange(1, L):
        sfp[i] = sfp[i-1] + fp[i]
    # good
    good = [4] * L
    for i in xrange(L-10):
        for j in xrange(4):
            if S[i+j] == "good"[j]:
                good[i] -= 1
    # problem
    problem = [7] * L
    for i in xrange(L-6):
        for j in xrange(7):
            if S[i+j] == "problem"[j]:
                problem[i] -= 1
    sp = [1000] * L
    for i in xrange(L-2, -1, -1):
        sp[i] = min(sp[i+1], problem[i])
    ans = good[0] + sp[4]
    for i in xrange(1, L-10):
        ans = min(ans, good[i] + sp[i+4] + sfp[i-1])
    print(ans)


T = input()
for i in xrange(T):
    solve()
0