SOJ ONLINE JUDGE

문제 142

구간의 색과 경계

내 상태
미제출
난이도
142번 문제 난이도 보기
Gold I
출제자
rlatjwls7882
시간 제한
3000 ms
메모리 제한
1024 MB
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

제출

편집기에서 나가려면 Esc를 누른 뒤 Tab 또는 Shift와 Tab을 누르세요.