BRCKTS  Brackets
We will call a bracket word any word constructed out of two sorts of characters: the opening bracket "(" and the closing bracket ")". Among these words we will distinguish correct bracket expressions. These are such bracket words in which the brackets can be matched into pairs such that
 every pair consists of an opening bracket and a closing bracket appearing further in the bracket word
 for every pair the part of the word between the brackets of this pair has equal number of opening and closing brackets
 replacement  changes the ith bracket into the opposite one
 check  if the word is a correct bracket expression
Task
Write a program which
 reads (from standard input) the bracket word and the sequence of operations performed,
 for every check operation determines if the current bracket word is a correct bracket expression,
 writes out the outcome (to standard output).
Input
Ten test cases (given one under another, you have to process all!). Each of the test cases is a series of lines. The first line of a test consists of a single number n (1<=n<=30000) denoting the length of the bracket word. The second line consists of n brackets, not separated by any spaces. The third line consists of a single number m  the number of operations. Each of the following m lines carries a number k denoting the operation performed. k=0 denotes the check operation, k>0 denotes replacement of kth bracket by the opposite.
Output
For every test case your program should print a line:
Test i:
where i is replaced by the number of the test
and in the following lines, for every check operation in the ith test
your program should print a line with the word
YES,
if the current bracket word is a correct bracket expression, and a line
with a word
NO otherwise.
(There should be as many lines as check operations in the test.)
Example
Input: 4 ()(( 4 4 0 2 0 [and 9 test cases more] Output: Test 1: YES NO [and 9 test cases more]Warning: large Input/Output data, be careful with certain languages
hide comments
rohit1507:
20170916 13:52:16
Think about how to check for balanced condition! Rest is just implementation in ST. 

suryansh_97:
20170730 12:58:16
Very easy ....just few things (count of unmatched open and closed brackets)............


sharif ullah:
20170719 20:09:47
Just consider t<=10 ,otherwise it may give u Runtime error, it give huge number of runtime errror~~~~~~ 

bala_24:
20170628 12:03:21
Getting WA if size of segment tree is 13*10^4 but got accepted with 13*10^7....could i know why this happened? Last edit: 20170628 12:04:27 

aditya9125:
20170621 19:34:08
Good one, but gets easier if you get the logic to merge the nodes.@segmentTrees 

priojeetpriyom:
20170616 13:02:10
getting WA. http://ideone.com/0VfL3Y 

lord_poseidon:
20170601 10:23:28
AC in one go, MRQ, seg tree 

hardik98:
20170525 16:02:05
will )( be a bracket word


kjain1810:
20170512 20:06:20
constraints for m??? 

imperfectboy:
20170501 03:38:07
Segment tree !!!! 0.40 sec :D 
Added by:  Adam Dzedzej 
Date:  20040615 
Time limit:  11s 
Source limit:  50000B 
Memory limit:  1536MB 
Cluster:  Cube (Intel G860) 
Languages:  All except: NODEJS PERL6 VB.NET 
Resource:  Internet Contest Pogromcy Algorytmow(Algorithm Tamers) 2003 Round IV 