문제 142
구간의 색과 경계
$N$개의 정수 위치가 모두 색 $0$으로 칠해져 있다. 위치의 번호는 $0$부터 $N-1$까지이다. 처음에는 구간 $[0,N)$ 하나만 있으며, 각 구간은 색과 경계로 구분한다.
다음 $Q$개의 연산을 순서대로 처리해 보자. 두 정수 $l$, $r$에 대해 구간 $[l,r)$은 $l$ 이상 $r$ 미만인 위치를 포함한다.
- $\texttt{C}\ l\ r\ c$: $[l,r)$의 모든 위치를 색 $c$로 칠하고 구간 내부의 경계를 제거한다.
- $\texttt{A}\ l\ r\ d$: $[l,r)$의 각 위치의 색에 $d$를 더한다. 기존 경계는 유지한다.
- $\texttt{S}\ p$: 위치 $p$에 경계를 추가한다.
- $\texttt{Q}\ p$: 위치 $p$를 포함하는 구간의 양 끝과 색을 구한다.
C, A 연산은 $l<r$이면 $l$과 $r$에 경계를 만든다. $l=r$이면 아무 변화도 없다. 한 번 생긴 경계는 C 연산으로 제거하지 않는 한 유지하고, 색이 같은 이웃 구간도 합치지 않는다.
입력
첫 번째 줄에 정수 $N$, $Q$가 공백으로 구분되어 주어진다. $(1\le N,Q\le200\,000)$
두 번째 줄부터 $Q$개의 줄에 걸쳐 연산이 다음 형식 중 하나로 주어진다.
- 문자
C와 정수 $l$, $r$, $c$가 공백으로 구분되어 주어진다. $(0\le l\le r\le N; \lvert c\rvert\le10^6)$ - 문자
A와 정수 $l$, $r$, $d$가 공백으로 구분되어 주어진다. $(0\le l\le r\le N; \lvert d\rvert\le10^6)$ - 문자
S와 정수 $p$가 공백으로 구분되어 주어진다. $(0\le p\le N)$ - 문자
Q와 정수 $p$가 공백으로 구분되어 주어진다. $(0\le p<N)$
변경 연산이 방문하는 기존 구간 수의 총합은 $10^7$ 이하이다.
출력
C, A 연산마다 모든 위치의 색의 합의 변화량을 한 줄에 출력한다. Q 연산마다 해당 위치를 포함한 반열린 구간의 왼쪽 끝, 오른쪽 끝, 색을 공백으로 구분하여 한 줄에 출력한다. S 연산에는 아무것도 출력하지 않는다.
예제 입력 1
5 10 Q 2 S 2 Q 1 C 1 4 7 Q 2 A 2 5 -3 Q 2 C 3 3 99 S 5 Q 4
예제 출력 1
0 5 0 0 2 0 21 1 4 7 -9 2 4 4 0 4 5 -3