Tập hợp động

Xem dạng PDF

Gửi bài giải


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

Nguồn bài:
© VNOI
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho một tập hợp ~S~ các số nguyên, bạn hãy lập trình thực hiện các thao tác sau:

  • ADD ~x~: thêm số ~x~ vào tập ~S~
  • DELETE ~x~: xóa số ~x~ khỏi tập ~S~
  • MININUM: tìm số nhỏ nhất trong tập ~S~
  • MAXIMUM: tìm số lớn nhất trong tập ~S~
  • SUCC ~x~: tìm số nhỏ nhất lớn hơn ~x~ trong tập ~S~
  • SUCC_2 ~x~: tìm số nhỏ nhất và không nhỏ hơn ~x~ trong tập ~S~
  • PRED ~x~: tìm số lớn nhất nhỏ hơn ~x~ trong tập ~S~
  • PRED_2 ~x~: tìm số lớn nhất không vượt quá ~x~ trong tập ~S~

Ghi chú: Đối với thao tác DELETE, giữ nguyên tập ~S~ nếu ~x~ không có trong tập ~S~. Đối với các thao tác MINIMUM, MAXIMUM, SUCC, SUCC2, PRED và PRED2, in ra 'empty' nếu tập ~S~ rỗng. Đối với các thao tác SUCC, SUCC2, PRED và PRED2, in ra 'no' nếu không tìm được số thỏa mãn.

Các thao tác ADD, DELETE, MINIMUM, MAXIMUM, SUCC, SUCC2, PRED, PRED2 lần lượt được mã hóa bởi các chỉ số 1 2 3 4 5 6 7 8.

Input

  • Gồm nhiều dòng, mỗi dòng bắt đầu bằng một số từ 0 đến 8 cho biết chỉ số thao tác cần thực hiện. Số 0 báo hiệu kết thúc dữ liệu nhập. Đối với các thao tác 1, 2, 5, 6, 7, 8, số tiếp theo trên dòng là số nguyên ~x~ ~(|x| \leq 10^{9})~ cho biết tham số của thao tác. Biết số thao tác cần thực hiện không vượt quá 300000.

Output

  • Đối với mỗi thao tác loại 3, 4, 5, 6, 7, 8 in ra một dòng là kết quả của thao tác.

Sample Input

4
1 10
1 5
3
1 7
4
2 5
3
5 10
6 10
7 10
8 10
2 10
7 100
0

Sample Output

empty
5
10
7
no
10
7
10
7

Note

  • Bạn hãy dùng cấu trúc set trong thư viện STL của C++.

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.