Tập hợp động

View as PDF

Submit solution


Points: 0.42 (partial)
Time limit: 1.0s
Memory limit: 512M
Input: stdin
Output: stdout

Problem source:
© VNOI
Problem type
Allowed languages
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++.

Comments

Please read the guidelines before commenting.


There are no comments at the moment.