시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB177837753.103%

문제

길이가 $N$이고 $0$과 $1$로만 이루어진 문자열이 입력으로 주어진다. 이때, 다음과 같은 쿼리를 수행해 보자.

  • $1 \, i$: $i$번째 문자를 반전한다. 즉, $i$번째 문자가 $0$이면 $1$로 바꾸고, 그렇지 않으면 $0$으로 바꾼다. ($1 \le i \le N$)
  • $2 \, x \, y$: 다음 조건을 모두 만족하는 정수 $l, r$이 있다면 YES, 그렇지 않으면 NO를 출력한다. ($1 \le x \le y \le N$)
    • $x \le l \le r \le y$
    • $l$번째 문자부터 $r$번째 문자까지의 부분 문자열의 길이, 즉 $r-l+1$은 짝수이다.
    • $l$번째 문자부터 $r$번째 문자까지의 부분 문자열에 있는 $r-l+1$개의 숫자의 합, 즉 숫자 $1$의 개수는 짝수이다. 단, $0$도 짝수로 간주한다.

쿼리가 누적해서 수행됨에 유의하여라.

입력

첫째 줄에 정수 $N$과 $Q$가 공백으로 구분되어 주어진다. $(1 \le N, Q \le 300\, 000)$

둘째 줄에 $0$과 $1$로만 이루어져 있는, 길이가 $N$인 문자열이 주어진다.

셋째 줄부터 $Q$개의 줄에 걸쳐 쿼리가 주어진다.

$1$번 쿼리의 경우, $1 \, i$의 형식으로 주어진다. $(1 \le i \le N)$

$2$번 쿼리의 경우, $2 \, x \, y$의 형식으로 주어진다. $(1 \le x \le y \le N)$

$2$번 쿼리가 한 개 이상 주어짐이 보장된다.

쿼리에서 입력으로 주어지는 모든 수는 정수이다.

출력

$2$번 쿼리가 주어질 때마다, 쿼리의 답을 한 줄에 하나씩 순서대로 출력한다.

예제 입력 1

3 4
101
2 1 3
1 1
2 2 2
2 1 2

예제 출력 1

NO
NO
YES

첫 번째 $2$번 쿼리의 경우, 101의 부분 문자열 중 길이가 짝수인 것은 1001이지만, 두 문자열의 모든 숫자의 합이 홀수이므로 답은 NO이다.

$1$번 쿼리에 의하여 문자열이 001로 변경된다.

두 번째 $2$번 쿼리의 경우, 0의 부분 문자열 중 길이가 짝수인 것은 없으므로 답은 NO이다.

세 번째 $2$번 쿼리의 경우, 00에 있는 모든 숫자의 합이 짝수이므로 답은 YES이다.

노트

어떤 문자열의 부분 문자열은 그 문자열의 비어 있지 않은 연속된 부분으로 정의한다.

출처

University > 서울대학교 > 2025 SCSC 알고리즘 대난투 D번