CF1023C Bracket Subsequence

题目描述

括号序列是只包含字符“(”和“)”的字符串。一个合法括号序列是指通过在原序列的字符之间插入“1”和“+”后,可以变为一个正确的算术表达式的括号序列。例如,括号序列“()()”和“(())”是合法的(插入后的表达式分别为“(1)+(1)”和“((1+1)+1)”),而“) (”、“(”和“)”都不是合法的。 子序列是指可以通过删除原序列中的某些元素(不改变剩余元素的顺序)得到的序列。 现在给定一个合法括号序列 $s$ 和一个整数 $k$,你的任务是找到一个长度恰好为 $k$ 的合法括号序列,并且它也是 $s$ 的一个子序列。 保证一定存在这样的序列。

输入格式

第一行包含两个整数 $n$ 和 $k$($2 \leq k \leq n \leq 2 \cdot 10^5$,且 $n$ 和 $k$ 都是偶数),分别表示 $s$ 的长度和你需要找到的序列的长度。 第二行是一个长度为 $n$ 的字符串 $s$,表示一个合法括号序列。

输出格式

输出一行,包含一个长度恰好为 $k$ 的合法括号序列,并且它是 $s$ 的一个子序列。 保证一定存在这样的序列。

说明/提示

由 ChatGPT 4.1 翻译