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

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

크면 빼기!

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

요약
여러 원소로 이루어진 집합에서 k번째로 작은 값을 묻는 질의와 x보다 큰 모든 원소에서 x를 빼는 질의를 순서대로 처리하며, 각 k번째 값을 출력한다.
난이도

어려움10점 중 8점

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

문제

nn개의 원소 a1,a2,…,ana_1, a_2, \ldots, a_n으로 이루어진 중복집합 AA를 생각하자.

이 중복집합에 대해 수행할 수 있는 두 가지 연산을 정의한다.

  1. xix_i가 주어지면, 중복집합을 비내림차순으로 정렬했을 때 xix_i번째가 되는 수를 출력한다.
  2. xix_i가 주어지면, AA의 원소 중 xix_i보다 큰 모든 원소에서 xix_i를 뺀다.

주어진 qq개의 연산을 순서대로 수행하고, 첫 번째 종류의 연산 결과를 모두 출력하시오.

입력

첫째 줄에 두 정수 nn과 qq가 주어진다. nn은 중복집합 AA의 크기이고 qq는 연산의 개수이다. (1≤n≤1051 \le n \le 10^5, 1≤q≤1061 \le q \le 10^6)

둘째 줄에 nn개의 정수 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다. (1≤ai≤1091 \le a_i \le 10^9) 이는 AA의 원소이다.

다음 qq개의 줄에 각각 하나의 연산이 주어진다. 연산은 두 정수 tit_i와 xix_i로 주어지며, 각각 연산의 종류와 매개변수이다. ti∈{1,2}t_i \in \{1, 2\}임이 보장된다. ti=1t_i = 1이면 1≤xi≤n1 \le x_i \le n이고, ti=2t_i = 2이면 1≤xi≤1091 \le x_i \le 10^9이다.

종류가 1인 연산이 적어도 하나 존재함이 보장된다.

AA의 원소는 임의의 순서로 주어짐에 유의하시오.

출력

종류가 1인 연산마다 xix_i번째 원소를 비내림차순 기준으로 출력한다. 답은 줄바꿈으로 구분한다.

예제3

  1. 예제 1

    입력
    4 5
    1 5 6 12
    2 5
    1 1
    1 2
    1 3
    1 4
    
    예상 출력
    1
    1
    5
    7
    
  2. 예제 2

    입력
    5 4
    1 10 5 4 2
    2 1
    1 5
    2 3
    1 2
    
    예상 출력
    9
    1
    
  3. 예제 3

    입력
    3 2
    3 2 1
    2 10000
    1 3
    
    예상 출력
    3