atcoder#AGC054D. [AGC054D] (ox)

[AGC054D] (ox)

题目描述

(, ), o, x からなる文字列 S S が与えられます. あなたは,S S の隣接する 2 2 文字をswapする操作を好きな回数行うことができます. 次の条件を達成するために必要な最小の操作回数を求めてください.

  • S S に登場するすべての o() で,x)( で置き換え,() のみからなる文字列 S S' を作る. この時,S S' 括弧の対応が取れている文字列である.

括弧の対応が取れている文字列の定義 括弧の対応が取れている文字列とは,次のうちいずれかの条件を満たす文字列です.

  • 空文字列
  • ある括弧の対応が取れている空でない文字列 s, t s,\ t が存在し,s, t s,\ t をこの順に連結した文字列
  • ある括弧の対応が取れている文字列 s s が存在し、 (, s s , ) をこの順に連結した文字列

なお,この問題の制約より,目標を達成することは必ず可能です.

输入格式

入力は以下の形式で標準入力から与えられる.

S S

输出格式

答えを出力せよ.

题目大意

给定一个串 SS 包含 ()ox

求最小的交换次数使得交换后的串将 o 替换为 (), x 替换为 )( 后,是一个合法括号序列。

)x(
3
()ox
2
()oxo(xxx))))oox((oooxxoxo)oxo)ooo(xxx(oox(x)(x()x
68

提示

制約

  • S S (, ), o, x からなる文字列
  • S S 1 1 つ以上の () を含み,またそれらの個数は等しい
  • S  8000 |S|\ \leq\ 8000

Sample Explanation 1

)x(x)(x()(x) と操作すればよいです. このとき,S= S'= ()() であり,これは括弧の対応の取れている文字列です.