Cho một tập hợp ban đầu rỗng (tập hợp có thể chứa nhiều số bằng nhau). Bạn cần thực hiện \(q\) thao tác gồm các dạng sau đây:
1 x: Thêm một số \(x\) vào tập hợp.2 x: Xoá một số \(x\) khỏi tập hợp (nếu tập hợp không còn số \(x\) nào thì không thực hiện gì).3 x: Hỏi số \(x\) có xuất hiện trong tập hợp không và tìm số \(k\) lớn nhất trong tập hợp sao cho \(k < x\).4 x: Hỏi số \(x\) có xuất hiện trong tập hợp không và tìm số \(k\) nhỏ nhất trong tập hợp sao cho \(k > x\).
Lưu ý: với truy vấn loại \(3\) và \(4\), nếu trong tập hợp có số \(x\) thì in YES, ngược lại in NO; sau đó in số \(k\) tìm được, nếu không tìm được số \(k\) thì in \(-1\).
Input
- Dòng đầu chứa số nguyên \(q\) là số lượng thao tác (\(1 \le q \le 2 \cdot 10^5\)).
- Trong \(q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(t\) và \(x\) (\(1 \le t \le 4\), \(1 \le x \le 10^9\)).
Output
Với mỗi truy vấn loại \(3\) hoặc \(4\), in ra trên một dòng YES hoặc NO và một số nguyên là đáp án của truy vấn, cách nhau một dấu cách.
Sample Input 1
10
1 258
1 10
1 69
3 69
4 69
3 110
2 10
2 10
3 69
4 100
Sample Output 1
YES 10
YES 258
NO 69
YES -1
NO 258
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.