提出 #68247634


ソースコード 拡げる

import sys
from typing import List, Tuple


def find_matching_parentheses(s: str) -> List[Tuple[int, int]]:
    """
    対応の取れた括弧列 s の各括弧の対応を求める。

    :param s: 対応の取れた括弧列(文字列)
    :return: 対応する括弧の位置ペア(1-indexed, 昇順ソート済み)
    """
    stack: List[int] = []
    pairs: List[Tuple[int, int]] = []

    for i, ch in enumerate(s):
        if ch == '(':
            stack.append(i + 1)  # 1-indexed
        else:
            if stack:
                left: int = stack.pop()
                pairs.append((left, i + 1))

    # 出力条件: max(l, r) 昇順
    pairs.sort(key=lambda x: max(x[0], x[1]))
    return pairs


def main() -> None:
    """
    標準入力を読み込み、対応括弧の位置を出力する。
    """
    s: str = sys.stdin.read().strip()
    result: List[Tuple[int, int]] = find_matching_parentheses(s)
    output: List[str] = [f"{l} {r}" for l, r in result]
    print("\n".join(output))


if __name__ == "__main__":
    main()

提出情報

提出日時
問題 B51 - Bracket
ユーザ myoshizumi
言語 Python (CPython 3.11.4)
得点 1000
コード長 1101 Byte
結果 AC
実行時間 78 ms
メモリ 33536 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1000 / 1000
結果
AC × 1
AC × 8
セット名 テストケース
Sample sample_01
All random_01, random_02, random_03, random_04, random_05, random_06, random_07, sample_01
ケース名 結果 実行時間 メモリ
random_01 AC 19 ms 10392 KiB
random_02 AC 19 ms 10460 KiB
random_03 AC 19 ms 10508 KiB
random_04 AC 22 ms 11492 KiB
random_05 AC 49 ms 21920 KiB
random_06 AC 78 ms 33536 KiB
random_07 AC 77 ms 33508 KiB
sample_01 AC 19 ms 10464 KiB