結果

問題 No.3143 Colorless Green Parentheses Sleep Furiously
ユーザー magurofly
提出日時 2025-05-16 21:43:52
言語 Ruby
(3.4.1)
結果
RE  
実行時間 -
コード長 795 bytes
コンパイル時間 600 ms
コンパイル使用メモリ 8,100 KB
実行使用メモリ 18,744 KB
最終ジャッジ日時 2025-05-17 00:24:02
合計ジャッジ時間 9,046 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 48 RE * 1
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

N, K = gets.split.map(&:to_i)
S = gets.chomp

stack = []
current = []
level = 0
S.each_char do |c|
	unless current
		puts "No"
		exit
	end
	case c
	when ?(
		level += 1
		stack << current
		inner = []
		current << inner
		current = inner
	when ?)
		level -= 1
		if level < 0
			puts "No"
			exit
		end
		current = stack.pop
	end
end

if level != 0
	puts "No"
	exit
end

def dfs(ans, current)
	min = 0
	case current.size
	when 0
		ans << "1+1"
		min += 2
	when 1
		ans << "("
		min += dfs(ans, current[0])
		ans << ")+1"
		min += 1
	else
		ans << "("
		min += dfs(ans, current[0])
		current[1 ..].each do |inner|
			ans << ")+("
			min += dfs(ans, inner)
		end
		ans << ")"
	end
	min
end
ans = ""
min = dfs(ans, current)
if min > K
	puts "No"
	exit
end
puts "Yes"
ans << "+1" * (K - min)
puts ans
0