C. The Monster
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

As Will is stuck in the Upside Down, he can still communicate with his mom, Joyce, through the Christmas lights (he can turn them on and off with his mind). He can't directly tell his mom where he is, because the monster that took him to the Upside Down will
know and relocate him.

Thus, he came up with a puzzle to tell his mom his coordinates. His coordinates are the answer to the following problem.

A string consisting only of parentheses ('(' and ')') is
called a bracket sequence. Some bracket sequence are called correct bracket sequences. More formally:

  • Empty string is a correct bracket sequence.
  • if s is a correct bracket sequence, then (s) is
    also a correct bracket sequence.
  • if s and t are
    correct bracket sequences, then st (concatenation of s and t)
    is also a correct bracket sequence.

A string consisting of parentheses and question marks ('?') is called pretty if and only if there's a way to replace each question mark with either '('
or ')' such that the resulting string is a non-empty correct bracket sequence.

Will gave his mom a string s consisting of parentheses and question marks (using Morse code through the lights) and his coordinates
are the number of pairs of integers (l, r) such that 1 ≤ l ≤ r ≤ |s| and
the string slsl + 1... sr is
pretty, where si is i-th
character of s.

Joyce doesn't know anything about bracket sequences, so she asked for your help.

Input

The first and only line of input contains string s, consisting only of characters '(',
')' and '?' (2 ≤ |s| ≤ 5000).

Output

Print the answer to Will's puzzle in the first and only line of output.

Examples
input
((?))
output
4
input
??()??
output
7
Note

For the first sample testcase, the pretty substrings of s are:

  1. "(?" which can be transformed to "()".
  2. "?)" which can be transformed to "()".
  3. "((?)" which can be transformed to "(())".
  4. "(?))" which can be transformed to "(())".

For the second sample testcase, the pretty substrings of s are:

  1. "??" which can be transformed to "()".
  2. "()".
  3. "??()" which can be transformed to "()()".
  4. "?()?" which can be transformed to "(())".
  5. "??" which can be transformed to "()".
  6. "()??" which can be transformed to "()()".
  7. "??()??" which can be transformed to "()()()".



//用r记录到当前位置的"("数量,t记录到当前位置的"?"数量,ans记录匹配数量
//出现"(",r++
//出现")",r--
//出现"?",r--,t++ //if(r==0)刚好匹配 ans++
//if(r<0&&t>0) r+=2 t--
//if(r<0&&t<0)break #include<iostream>
#include<string>
#include<fstream>
using namespace std; int main()
{
//freopen("in.txt","r",stdin);
string str;
cin>>str;
int r=0;int t=0;int ans=0;
for(int j=0;j<str.length();j++)
{ r=0;t=0;
for(int i=j;i<str.length();i++)
{
if(str[i]=='(')r++;
else if(str[i]==')')r--;
else r--,t++;
if(r==0)ans++;
else if(r<0&&t>0)r+=2,t--;
else if(r>0) continue;
else if(r<0&&!t)break; }
}
cout<<ans<<endl; return 0;
}




最新文章

  1. Java调用Linux命令
  2. 【leetcode】Find Minimum in Rotated Sorted Array I&amp;&amp;II
  3. jQuery基础,定时器,工厂函数
  4. POJ 1200 字符串HASH
  5. eclipse java 空心J文件的回复
  6. UWSGI安装与使用
  7. ASIHTTPRequest中的DELETE、PUT、GET、POST请求实例-备用
  8. 《经久不衰的Spring框架:Spring+SpringMVC+MyBatis 整合》
  9. WPF蒙板弹窗
  10. python 类的绑定方法和非绑定方法
  11. P2255 [USACO14JAN]记录奥林比克
  12. StringUtils.isEmpty StringUtils.isBlank
  13. 超实用的 Nginx 极简教程,覆盖了常用场景
  14. python-获取当前工作路径
  15. web.xml文件的简单说明
  16. arduino驱动安装
  17. python 字符串操作常用函数总结
  18. [codeup] 1943 进制转换
  19. Cocos2d-x调用Java 代码
  20. C#中的异步调用及异步设计模式(二)——基于 IAsyncResult 的异步设计模式

热门文章

  1. 表皮囊肿?wtf
  2. java的计时:毫秒、纳秒
  3. c++多线程编程:常见面试题
  4. 使用WIN32汇编语言实现一个基本windows窗体的过程分析
  5. Visual Studio Visual assistant注释也做拼写检查怎么办
  6. leetCode 67.Add Binary (二进制加法) 解题思路和方法
  7. Hive中行列转换
  8. oracle分区表有什么作用
  9. APACHE2 服务器配置 (二) 默认端口***
  10. hdu4352(数位DP + LIS(nlogn))