만드는 중입니다

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

잊음을 논함

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

요약
교환 연산을 번호로 끄고 켤 수 있을 때, 현재 적용 중인 교환만 반영한 특정 위치의 값을 구합니다.
난이도

어려움10점 중 9점

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

문제

정수 NN개로 이루어진 수열 aa가 있다. 처음에는 모든 ii에 대해 a_i=ia\_i=i이다. 이 수열에 대해 QQ개의 질의를 처리해야 한다.

  • s ii jj: a_ia\_i와 a_ja\_j의 값을 서로 교환한다.
  • f ii: 지금까지 입력된 질의 중 ii번째 질의를 잊는다. ii번째 질의는 s 질의이며, 잊지 않은 상태임이 보장된다.
  • r ii: 지금까지 입력된 질의 중 ii번째 질의를 다시 기억해 낸다. ii번째 질의는 s 질의이며, 잊은 상태임이 보장된다.
  • q ii: 지금까지 입력된 s 질의 중 잊지 않은 상태인 것만 입력 순서대로 반영했을 때, aia_i의 값을 출력한다.

모든 s 질의는 어느 시점에서든 잊은 상태 또는 잊지 않은 상태 중 하나이다. s 질의가 입력된 직후에는 잊지 않은 상태가 된다. 잊지 않은 상태인 s 질의를 잊으면 잊은 상태가 된다. 잊은 상태인 s 질의를 다시 기억해 내면 잊지 않은 상태가 된다.

잊는 것은 병이 아니다. 잊지 않는 것이 병이 아닌 것은 아니다. 여러분은 잊어야 할 것을 잊을 수 있을까?

입력

첫 번째 줄에 수열의 길이 NN과 질의의 개수 QQ가 주어진다. (2≤N≤4 000 0002 \le N \le 4\,000\,000; 1≤Q≤2 000 0001 \le Q \le 2\,000\,000)

두 번째 줄부터 QQ개의 줄에 걸쳐 위에서 설명한 형식의 질의가 한 줄에 하나씩 주어진다.

모든 s 질의에 대해 1≤i<j≤N1 \le i < j \le N이며, 모든 q 질의에 대해 1≤i≤N1 \le i \le N이다.

입력에는 q 질의가 적어도 하나 주어진다.

출력

각 q 질의에 대해 정답을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    5 11
    s 1 2
    s 2 3
    s 3 4
    q 4
    f 2
    q 4
    f 3
    r 2
    q 4
    s 1 2
    q 2
    
    예상 출력
    1
    3
    4
    2