CF3D.Least Cost Bracket Sequence

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

This is yet another problem on regular bracket sequences.

A bracket sequence is called regular, if by inserting "+" and "1" into it we get a correct mathematical expression. For example, sequences "(())()", "()" and "(()(()))" are regular, while ")(", "(()" and "(()))(" are not. You have a pattern of a bracket sequence that consists of characters "(", ")" and "?". You have to replace each character "?" with a bracket so, that you get a regular bracket sequence.

For each character "?" the cost of its replacement with "(" and ")" is given. Among all the possible variants your should choose the cheapest.

给一个序列,序列里面会有左括号、问号、右括号。对于一个‘?’而言,可以将其替换为一个‘(’,也可以替换成一个‘)’,但是都有相应的代价。问:如何替换使得代价最小。前提是替换之后的序列中,括号是匹配的。如果不能替换为一个括号匹配的序列则输出-1。

输入格式

The first line contains a non-empty pattern of even length, consisting of characters "(", ")" and "?". Its length doesn't exceed 51045·10^{4} . Then there follow mm lines, where mm is the number of characters "?" in the pattern. Each line contains two integer numbers aia_{i} and bib_{i} ( 1<=ai,bi<=1061<=a_{i},b_{i}<=10^{6} ), where aia_{i} is the cost of replacing the ii -th character "?" with an opening bracket, and bib_{i} — with a closing one.

第一行是序列,序列长度不超过 5×1045\times 10^4,下面mmmm是?的数量)行有每行 22 个数据,第一个是 '('的代价,第2个是 ')' 的代价。

输出格式

Print the cost of the optimal regular bracket sequence in the first line, and the required sequence in the second.

Print -1, if there is no answer. If the answer is not unique, print any of them.

第一行输出最小代价,第二行输出替换后的序列。不行输出 1-1

输入输出样例

  • 输入#1

    (??)
    1 2
    2 8

    输出#1

    4
    ()()
首页