Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e6 + 10;
- int n, v[N], m[2][N];
- int p[N];
- char x[N];
- int main(){
- cin >> n;
- for(int i =1 ; i <= n; i++){
- cin >> x[i];
- v[i] = x[i] == '(';
- }
- if(n&1){
- cout << 0 << endl;
- return 0;
- }
- p[0] = 0; m[0][0] = 0;
- for(int i = 1; i <= n; i++){
- p[i] = p[i-1] + (v[i]?1:-1);
- }
- for(int i =0 ; i <= n; i++){
- m[0][i] = min(m[0][i-1], p[i]);
- }
- m[1][n] = p[n];
- for(int i = n-1; i>=1; i--){
- m[1][i] = min(m[1][i+1] , p[i]);
- }
- int ans = 0;
- for(int i = 1; i <= n; i++){
- if(v[i]) ans+=(p[n] == 2 && m[0][i-1] >= 0 && m[1][i] >= 2);
- else ans+=(p[n] == -2 && m[0][i-1] >= 0 && p[i] >= -2 && m[1][i] >= -2);
- }
- cout << ans << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment