만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

A + B

시간 제한8초메모리 제한512 MB

요약
이진수 A와 B가 주어지고, A 또는 B의 비트를 뒤집을 때마다 A 이상 A+B 미만인 x의 1 비트 개수 최댓값을 구합니다.
난이도

어려움10점 중 8점

유형
비트 연산, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

2진수 AA, BB가 주어졌을 때 다음 쿼리를 처리하라.

  • 출력 쿼리: A≤x<A+BA \leq x < A+B를 만족하는 xx를 2진수로 나타냈을 때 1의 개수의 최댓값을 출력한다.
  • A 변경 쿼리: AA의 최하위 비트부터 ii번째 비트(0부터 셈)를 반전한다.
  • B 변경 쿼리: BB의 최하위 비트부터 ii번째 비트(0부터 셈)를 반전한다.

비트 번호는 0부터 센다. 즉, AA의 0번째 비트는 최하위 비트다.

입력

입력은 다음 형식으로 주어진다.

NN AA BB Q1Q_1 ... QNQ_N

첫 줄에 쿼리의 개수 NN과 2진수 AA, BB가 주어진다. 2번째 줄부터 N+1N+1번째 줄까지 쿼리가 주어진다. QQ는 출력 쿼리이고, "A ii"와 "B ii"는 각각 AA와 BB의 최하위 비트부터 ii번째 비트를 반전하는 변경 쿼리다.

출력

출력 쿼리마다 답을 한 줄에 출력하라.

제한

  • 1≤N<3000001 \leq N < 300000
  • 1≤∣A∣,∣B∣≤3000001 \leq |A|, |B| \leq 300000 (∣A∣|A|는 AA의 길이)
  • "A ii" 쿼리에서 0≤i<∣A∣0 \leq i < |A|
  • "B ii" 쿼리에서 0≤i<∣B∣0 \leq i < |B|
  • BB가 0이 되는 경우는 없다.

예제2

  1. 예제 1

    입력
    4 10000 00101
    Q
    A 0
    B 1
    Q
    
    예상 출력
    3
    4
    
  2. 예제 2

    입력
    9 0110111101 0010100111
    Q
    B 4
    Q
    A 4
    Q
    B 9
    Q
    A 8
    Q
    
    예상 출력
    9
    9
    9
    10
    9