結果

問題 No.3503 Brackets Stack Query 2
コンテスト
ユーザー Shiny
提出日時 2026-04-18 01:10:59
言語 Python3
(3.14.3 + numpy 2.4.4 + scipy 1.17.1)
コンパイル:
python3 -mpy_compile _filename_
実行:
python3 _filename_
結果
AC  
実行時間 645 ms / 2,000 ms
コード長 1,029 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 424 ms
コンパイル使用メモリ 20,700 KB
実行使用メモリ 82,172 KB
最終ジャッジ日時 2026-04-18 01:11:23
合計ジャッジ時間 19,968 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys


def main():
    data = sys.stdin.buffer.read().split()
    q = int(data[0])

    prev = [0] * (q + 5)
    kind = [0] * (q + 5)
    head = [0] * (q + 2)

    node = 0
    length = 0
    p = 1
    out = []

    LPAR = ord('(')
    BAR = ord('|')
    RPAR = ord(')')

    for _ in range(q):
        t = data[p]
        p += 1

        if t == b'1':
            c = data[p][0]
            p += 1

            top = head[length]
            length += 1

            erased = False
            if c == RPAR and top:
                one = prev[top]
                if kind[top] == BAR and one and kind[one] == LPAR:
                    head[length] = prev[one]
                    erased = True

            if not erased:
                node += 1
                kind[node] = c
                prev[node] = top
                head[length] = node
        else:
            length -= 1

        out.append("Yes" if head[length] == 0 else "No")

    sys.stdout.write('\n'.join(out))


if __name__ == "__main__":
    main()
0