올바른 괄호 문자열과 쿼리
시간 제한2초메모리 제한1024 MB
`(`, `)`, `*`로 이루어진 문자열에서 한 글자를 바꾸는 갱신과, 구간의 `*`를 임의로 바꾸거나 지워 올바른 괄호 문자열을 만들 수 있는지 묻는 쿼리를 처리합니다.
문제
이 문제는 출제자가 어떤 온라인 저지의 어떤 문제를 보고 영감이 떠올라 내용째로 가져와 약간만 수정한 문제입니다.
올바른 괄호 문자열은 다음과 같이 정의된 문자열의 특성입니다.
- 빈 문자열 은 올바른 괄호 문자열입니다.
- 가 올바른 괄호 문자열이라면, 를 괄호로 둘러싼 또한 올바른 괄호 문자열입니다.
- 와 가 올바른 괄호 문자열이라면, 와 를 붙인 또한 올바른 괄호 문자열입니다.
길이가 이며 '(', ')', '*'로만 이루어진 문자열 가 주어집니다. 여러분은 다음과 같은 쿼리 개를 해결해야 합니다.
1: 의 번째 문자를 로 바꿉니다. 는'(',')','*'중 하나입니다. ()2: 의 부분 문자열 에서 등장하는'*'를 각각 임의로'(',')', 또는 빈 문자열 로 바꾼 뒤, 으로 바꾼 부분을 제외하고 모두 원래 순서대로 이어붙여 올바른 괄호 문자열을 만들 수 있는지 구합니다. ()
과연 여러분은 충분히 빠르게 모든 쿼리를 해결할 수 있을까요?
입력
첫 번째 줄에 문자열 의 길이 과 쿼리의 수 가 공백으로 구분되어 주어집니다. ()
두 번째 줄에 길이 의 문자열 가 주어집니다. 의 모든 문자는 '(', ')', '*' 중 하나입니다.
그다음 줄부터 개의 줄에 걸쳐 각 줄에 쿼리가 하나씩 주어집니다. 각 쿼리는 지문에서 주어진 종류 중 하나입니다.
출력
2번 쿼리가 입력될 때마다, 올바른 괄호 문자열을 만들 수 있다면 'Yes'를, 아니면 'No'를 새로운 줄에 출력합니다.