Phần tử nhỏ thứ k

Xem dạng PDF

Gửi bài giải

Điểm: 0,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho mảng ~a~ gồm ~n~ phần tử được đánh số từ ~1~ đến ~n~ và ~q~ thuộc một trong ba dạng:

  1. Cho số nguyên ~x~, thêm một phần tử có giá trị ~x~ vào mảng ~a~.

  2. Cho số nguyên ~y~, xóa một phần tử có giá trị ~y~ khỏi mảng ~a~ (nếu mảng ~a~ không có phần tử nào có giá trị ~y~, bỏ qua thao tác này).

  3. Cho số nguyên ~k~, in ra phần tử nhỏ thứ ~k~ của mảng. Nói cách khác, gọi mảng ~b~ là mảng ~a~ sau khi sắp xếp theo thứ tự không giảm, tìm ~b_k~.

Yêu cầu: Với mỗi truy vấn loại 3, in ra giá trị cần tìm.

Input

Dòng đầu tiên chứa hai số nguyên ~n, q~ là kích thước mảng ~a~ và số lượng truy vấn.

Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2, \dots, a_n~ (với ~1 \leq a_i \leq 10^9~) mô tả mảng ~a~.

Trong ~q~ dòng tiếp theo, mỗi dòng chứa hai số nguyên mô tả một truy vấn:

  • Đối với truy vấn loại 1, hai số nguyên đó là ~1 \space x~ (với ~1 \leq x \leq 10^9~).

  • Đối với truy vấn loại 2, hai số nguyên đó là ~2 \space y~ (với ~1 \leq y \leq 10^9~).

  • Đối với truy vấn loại 3, hai số nguyên đó là ~3 \space k~ (với ~1 \leq k \leq |a|~ và ~|a|~ là kích thước của mảng ~a~ tại thời điểm truy vấn).

Output

Với mỗi truy vấn loại 3, in ra đáp án trên một dòng.

Scoring

  • Subtask ~1~ (chiếm ~20\%~ số điểm): ~1 \leq n, q \leq 2000~.

  • Subtask ~2~ (chiếm ~10\%~ số điểm): ~1 \leq n, q \leq 5000~.

  • Subtask ~3~ (chiếm ~70\%~ số điểm): ~1 \leq n, q \leq 3 \cdot 10^5~.

Sample Input 1

5 4
5 3 8 6 2
1 4
3 2
2 3
3 1

Sample Output 1

3
2

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.