아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

통로 위의 개미

시간 제한3초메모리 제한512 MB

요약
양 끝과 서로 부딪히면 방향을 바꾸는 개미들을 시간 순으로 복도에 놓고 지정한 번호의 개미 좌표를 구합니다.
난이도

어려움10점 중 8점

유형
수학, 정렬
정답자
아직 제출이 없습니다

문제

길이가 LL인 선분 모양의 통로가 있다. 통로에는 좌표가 붙어 있다. 왼쪽 끝점의 좌표는 00, 오른쪽 끝점의 좌표는 LL이고, 통로를 x:yx : y로 내분하는 점의 좌표는 xLx+y\frac{xL}{x+y}다.

경근이는 심심할 때마다 통로 위에 개미를 한 마리씩 올린다. 이 통로에 올라간 개미는 반드시 왼쪽이나 오른쪽으로 1초에 거리 1씩 움직인다. 통로의 폭은 개미 한 마리만 지나갈 만큼 좁다. 서로 반대 방향으로 움직이던 두 개미가 한 점에서 만나면 그 즉시 둘 다 방향을 반대로 바꾸고 속력은 그대로 유지한다. 개미가 통로의 끝점에 닿을 때도 그 즉시 방향을 반대로 바꾸고 속력을 유지한다. 개미는 크기가 없는 점으로 다룬다. 두 개미는 좌표가 정확히 같아야 부딪히고, 좌표가 정확히 00이나 LL이어야 방향을 바꾼다.

시각 00초에는 통로 위에 개미가 한 마리도 없다. 다음 두 종류의 동작 QQ개를 처리하는 프로그램을 작성하라.

  1. tt초에 좌표가 xx인 지점에 오른쪽이나 왼쪽으로 움직이는 개미를 올린다. 이 개미가 ii번째로 올라간 개미라면 번호 ii를 받는다.
  2. tt초일 때 ii번 개미의 좌표를 출력한다.

입력

첫 줄에 자연수 LL과 QQ가 주어진다 (1≤L≤1091 \le L \le 10^9, 1≤Q≤2×1051 \le Q \le 2 \times 10^5).

다음 QQ개의 줄에 처리할 동작이 한 줄에 하나씩 주어진다. 각 줄은 동작이 일어나는 시각을 나타내는 정수 tt (0≤t≤10180 \le t \le 10^{18})와 동작의 종류를 나타내는 자연수 pp (1≤p≤21 \le p \le 2)로 시작하고, 그 뒤는 다음과 같다.

  • p=1p = 1이면 개미를 올릴 좌표 xx (0<x<L0 < x < L)와 방향을 나타내는 정수 dd (d∈{−1,1}d \in \{-1, 1\})가 이어진다. tt초에 좌표 xx인 지점에 개미를 올리며, d=1d = 1이면 오른쪽으로, d=−1d = -1이면 왼쪽으로 움직인다. 그 시각에 그 좌표에 다른 개미가 있는 경우는 입력으로 주어지지 않는다.
  • p=2p = 2이면 좌표를 알고 싶은 개미의 번호 ii가 이어진다. ii는 11 이상이고 그때까지 올라간 개미의 수 이하다. tt초일 때 ii번 개미의 좌표를 출력하라는 뜻이다.

입력은 tt가 증가하는 순서로 주어지고, 두 동작의 tt가 같은 경우는 없다.

출력

p=2p = 2인 동작마다 그 개미의 좌표를 한 줄에 하나씩 출력한다. 이 조건에서 질의 시각의 좌표는 항상 정수이므로 정수로 출력한다.

예제3

  1. 예제 1

    입력
    5 5
    0 1 2 1
    2 1 3 -1
    6 2 2
    7 2 1
    8 2 2
    
    예상 출력
    1
    2
    0
    
  2. 예제 2

    입력
    4 6
    0 1 1 -1
    1 2 1
    2 2 1
    5 2 1
    9 2 1
    12 2 1
    
    예상 출력
    0
    1
    4
    0
    3
    
  3. 예제 3

    입력
    6 6
    0 1 2 1
    1 1 5 -1
    4 2 1
    5 2 2
    9 2 1
    10 2 2
    
    예상 출력
    2
    5
    1
    4