Paint It Anything Other Than White

시간 제한1초메모리 제한1024 MB

요약
8가지 RGB 마스크 색으로 칠해진 N개 칸에서 한 칸씩 색을 바꾸고, 구간 안에서 합성 결과가 흰색이 아닌 가장 긴 연속 부분 구간의 길이를 구한다.
난이도

어려움10점 중 8점

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

문제

우리는 빛의 3가지 원색 R, G, B을 조합하여 다양한 색을 만들어 낼 수 있다. 이 문제에서는 R, G, B가 이분법적으로 포함되어 있거나, 포함되어 있지 않은 23=82^3 = 8가지 색에 대해서만 생각해 보자.

각 색의 R, G, B 포함 여부는 다음과 같다.

색IDR 포함G 포함B 포함
검정KXXX
빨강ROXX
초록GXOX
파랑BXXO
노랑YOOX
청록CXOO
보라POXO
흰색WOOO

두 가지 이상의 색의 합성은, 각 색에 포함된 원색의 집합을 합집합한 색을 의미한다. 예를 들어, 여러 개의 색 중 원색 R을 포함하는 색이 하나라도 있다면 최종 색은 원색 R을 포함하게 된다.

11부터 NN까지 번호가 매겨진 NN개의 칸이 있고, 각 칸은 검정, 빨강, 초록, 파랑, 노랑, 청록, 보라, 흰색 중 하나의 색을 가질 수 있다.

모든 칸은 흰색인 상태에서 시작한다.

이때 다음의 쿼리를 수행하는 프로그램을 작성하시오.

  • QQ ii jj: i≤a≤b≤ji\le a\le b\le j를 만족하며, a,a+1…b−1,ba,a+1\dots b-1,b번째 칸을 합성한 색이 흰색이 아닌 a,ba,b에 대해 b−a+1b-a+1의 최댓값을 출력한다. 만약 이와 같은 a,ba,b가 존재하지 않는다면 00을 출력한다.
  • UU ii XX: ii번째 칸의 색을 XX로 바꾼다. XX는 K, R, G, B, Y, C, P, W 중 하나이며, 위 표의 ID에 대응된다.

입력

첫째 줄에 칸의 개수 NN, 쿼리의 개수 KK가 공백으로 구분되어 주어진다. (1≤N≤100,000;(1\le N\le 100\\, 000; 1≤K≤200,000)1 \le K \le 200\\,000)

다음 KK개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다.

입력으로 주어지는 모든 수는 정수이다.

출력

한 줄에 하나씩, 각각의 쿼리의 결과를 순서대로 출력한다.

예제2

  1. 예제 1

    입력
    4 7
    Q 1 4
    U 1 R
    U 2 G
    U 3 Y
    Q 1 3
    U 2 C
    Q 1 4
    
    예상 출력
    0
    3
    1
    
  2. 예제 2

    입력
    10 12
    U 1 R
    U 3 G
    U 5 B
    U 4 P
    Q 1 10
    U 6 Y
    Q 1 10
    U 7 P
    U 8 B
    U 9 R
    U 10 P
    Q 1 10
    
    예상 출력
    2
    2
    4