#bitflyer2018finalc. [bitflyer2018_final_c]部分文字列と括弧

[bitflyer2018_final_c]部分文字列と括弧

問題文

() からなる文字列 SS が与えられます。次の条件を満たす整数 (i,j)(i,j) (1ijS1 ≤ i ≤ j ≤ |S|) の組はいくつあるでしょうか。

条件: - SSii 文字目から jj 文字目まで (両端を含む) を取り出した時、その文字列は括弧の対応が取れている

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

  • 空文字列
  • ある括弧の対応が取れている文字列 A,BA, B が存在し、 A,BA, B をこの順に連結した文字列
  • ある括弧の対応が取れている文字列 AA が存在し、 (, AA, ) をこの順に連結した文字列

制約

  • 1S1051 ≤ |S| ≤ 10^5
  • SS(, ) のみからなる文字列

入力

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

SS

出力

条件を満たす整数 (i,j)(i,j) (1ijS1 ≤ i ≤ j ≤ |S|) の組の個数を出力せよ。


入力例 1

((())

出力例 1

2
  • SS22 文字目から 55 文字目までを取り出すと、 (()) です。これは括弧の対応が取れています。
  • SS33 文字目から 44 文字目までを取り出すと、 () です。これは括弧の対応が取れています。

よって、 (2,5)(2, 5) および (3,4)(3, 4) が条件を満たします。


入力例 2

(()()(())(

出力例 2

7