만드는 중입니다

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

모든 일에 적당히

시간 제한1초메모리 제한2048 MB

요약
배열이 [0]에서 시작하고, 각 연산 후 배열의 가운데 원소를 출력합니다. 삽입은 1, 2, 3 순서로 다음 자연수를 가져옵니다.
난이도

어려움10점 중 8점

유형
연결 리스트, 트리, 시뮬레이션
정답자
아직 제출이 없습니다

문제

처음에 길이가 11이고 수 00만 들어 있는 배열이 있다. 자연수가 오름차순으로 적힌 예약 목록이 있으며, 목록의 첫 번째 수는 11이다. 배열에 대해 qq번의 연산이 수행된다. ii번째 연산은 다음 중 하나이다.

  • Insert(p, x): 배열에서 수 pp 바로 뒤에 예약 목록의 처음 xx개 수를 오름차순으로 삽입한다. 삽입한 수는 예약 목록에서 제거된다.
  • Remove(p, x): 배열에서 수 pp 바로 뒤에 있는 다음 xx개 수를 제거한다. 제거한 수는 예약 목록으로 돌아가지 않는다.

qq개 연산의 정보가 주어진다. 각 연산을 수행한 뒤 배열의 가운데에 있는 수를 구하라. ii번째 연산 후 배열의 길이가 nn이면, 배열의 ⌈n2⌉\lceil \frac{n}{2} \rceil번째 원소를 구한다. 배열의 인덱스는 11부터 시작한다.

입력

첫 줄에 정수 qq (1≤q≤5⋅1051 \le q \le 5 \cdot 10^5)가 주어진다. 다음 qq개 줄에는 각각 두 정수 pip_i (1≤pi≤2⋅1091 \le p_i \le 2 \cdot 10^9)와 kik_i (1≤∣ki∣≤2⋅1091 \le |k_i| \le 2 \cdot 10^9)가 주어진다.

ki=+xk_i = +x이면 Insert(p_i, x) 연산을, ki=−xk_i = -x이면 Remove(p_i, x) 연산을 수행한다. 모든 연산은 유효하며, 배열에서 불가능한 연산은 수행되지 않는다고 보장된다. 또한 예약 목록에서 배열로 옮겨지는 수는 모두 합쳐 최대 2⋅1092 \cdot 10^9개이다.

출력

qq개 줄을 출력한다. ii번째 줄에는 ii번째 연산을 수행한 뒤 배열의 가운데 원소를 출력한다.

예제1

  1. 예제 1

    입력
    10
    0 3
    0 2
    5 -2
    4 1
    0 -2
    5 2
    7 3
    3 2
    10 5
    12 20
    
    예상 출력
    1
    5
    4
    6
    5
    7
    9
    10
    16
    22