結果

問題 No.2924 <===Super Spaceship String===>
ユーザー kmmtkmkmmtkm
提出日時 2024-10-12 15:42:16
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 2,045 bytes
コンパイル時間 133 ms
コンパイル使用メモリ 82,220 KB
実行使用メモリ 78,344 KB
最終ジャッジ日時 2024-10-12 15:42:18
合計ジャッジ時間 1,305 ms
ジャッジサーバーID
(参考情報)
judge / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 35 ms
53,280 KB
testcase_01 AC 36 ms
53,268 KB
testcase_02 AC 34 ms
53,408 KB
testcase_03 AC 36 ms
52,928 KB
testcase_04 WA -
testcase_05 WA -
testcase_06 AC 36 ms
53,256 KB
testcase_07 AC 47 ms
61,460 KB
testcase_08 AC 41 ms
60,384 KB
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys


def debug(*args):
    print(*args, file=sys.stderr)



s = input()
ans = len(s)

# left_list = []
# right_list = []
# i = 0
# mid_flg = False
# # add = 0
# last_left = None
# last_right = None
# for i in range(len(s)):
    # if s[i] == '<':
    #     left_list.append(i)
    #     mid_flg = False
    # elif s[i] == '=':
    #     mid_flg = True
    # else:
    #     if mid_flg and left_list and (not right_list or left_list[-1] > right_list[-1]):
    #         l = left_list.pop()
    #         ans -= (i-l+1)
    #         if last_left is not None and l < last_left:
    #             ans += last_right-last_left+1
    #         debug(i, l, ans)
    #         last_left = l
    #         last_right = i
    #         if l > 0 and s[l-1] == '=':
    #             mid_flg = True
    #         else:
    #             mid_flg = False
    #     else:
    #         right_list.append(i)
    #         mid_flg = False

l = 0
left_list = []
# right_list = []
last_left = None
last_right = None
start_r = None
while l < len(s):
    if s[l] == '<':
        mid_flg = False
        if start_r is None:
            r = l + 1
        elif l > start_r:
            r = l + 1
            start_r = None
        else:
            r = start_r
        while r < len(s):
            if s[r] == '=':
                mid_flg = True
            elif s[r] == '>':
                if mid_flg:
                    ans -= (r-l+1)
                    if last_left is not None and l < last_left and last_right < r:
                        ans += last_right-last_left+1
                    last_left = l
                    last_right = r
                    start_r = r + 1
                    if left_list:
                        l = left_list.pop()
                    else:
                        l = r + 1
                    break
                else:
                    l = r + 1
                    break
            else:
                left_list.append(l)
                l = r
                break
            r += 1
    l += 1
print(ans)
0