만드는 중입니다

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

달걀 칠하기

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

요약
한 줄로 놓인 N개의 달걀에서 칠하기, 제거, 색 조회 연산을 처리하고, L 질의마다 칠해지지 않은 연속 달걀의 최장 길이를 구합니다.
난이도

보통10점 중 7점

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

문제

토끼 Jänku는 부활절을 맞아 달걀을 칠한다. 처음에 한 줄로 길게 늘어선 흰 달걀이 NN개 있다. Jänku는 이 줄에서 서로 다른 달걀의 자리로 뛰어가, 각 달걀에 대해 다음 세 가지 연산 중 하나를 할 수 있다.

  • 달걀을 칠한다.
  • 달걀을 줄에서 뺀다.
  • 달걀이 지금 어떤 색인지 확인한다.

또한 Jänku는 가끔 그 순간 칠해지지 않은 달걀이 연속으로 이어진 구간 중 가장 긴 구간의 길이가 궁금하다. 이 힘든 작업을 Jänku가 해낼 수 있도록 도와주어라.

입력

첫 줄에 흰 달걀의 초기 개수 NN(1≤N≤1091 \le N \le 10^9)과 연산의 개수 KK(1≤K≤1051 \le K \le 10^5)가 주어진다. 다음 KK개의 줄에는 아래 중 하나의 연산이 주어진다.

  • S ii vv (i>0i > 0인 정수이고, vv는 'a'부터 'z'까지의 영문 소문자이다): ii번째 자리의 달걀을 색 vv로 칠한다. 첫 번째 자리의 번호는 1이다.
  • G ii (i>0i > 0인 정수이다): ii번째 자리에 있는 달걀의 색을 출력한다. 흰 달걀의 색 코드는 '.'으로 출력한다.
  • D ii (i>0i > 0인 정수이다): ii번째 자리의 달걀을 줄에서 제거한다. 오른쪽에 있던 달걀은 모두 한 칸씩 왼쪽으로 이동한다.
  • L: 현재 가장 긴 칠해지지 않은 달걀 구간의 길이를 출력한다. 흰 달걀이 남아 있지 않으면 00을 출력한다.

출력

입력에 주어진 G와 L 연산의 개수만큼 줄을 출력한다. 각 줄에는 G 연산의 결과로 색을 나타내는 글자 하나 또는 L 연산의 결과로 0 이상의 정수 하나를 출력한다.

예제1

  1. 예제 1

    입력
    10 9
    S 5 a
    S 4 b
    S 5 c
    L
    D 4
    G 4
    G 1
    D 4
    L
    
    예상 출력
    5
    c
    .
    8