結果

問題 No.3503 Brackets Stack Query 2
コンテスト
ユーザー tikisan_
提出日時 2026-04-17 22:02:10
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
AC  
実行時間 101 ms / 2,000 ms
コード長 710 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 17,741 ms
コンパイル使用メモリ 281,828 KB
実行使用メモリ 28,672 KB
最終ジャッジ日時 2026-04-17 22:02:38
合計ジャッジ時間 25,764 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import (
	"bufio"
	"fmt"
	"os"
)

type Node struct {
	c byte
	p *Node
	n int
}

func main() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Split(bufio.ScanWords)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var q, cur int
	fmt.Scan(&q)
	st := make([]*Node, q+1)

	for i := 0; i < q; i++ {
		sc.Scan()
		if sc.Text() == "1" {
			sc.Scan()
			c := sc.Text()[0]
			prev := st[cur]
			now := &Node{c, prev, 1}
			if prev != nil { now.n = prev.n + 1 }
			
			if c == ')' && now.n >= 3 && now.p.c == '|' && now.p.p.c == '(' {
				now = now.p.p.p
			}
			cur++
			st[cur] = now
		} else {
			cur--
		}

		if st[cur] == nil {
			out.WriteString("Yes\n")
		} else {
			out.WriteString("No\n")
		}
	}
}
0