CPPSET - Tập hợp động

Giới hạn
  • Thời gian: 0.219s
  • Bộ nhớ: 1536MB
  • Mã nguồn: 50000 bytes

Ghi chú: Các bài VNOI đã được chuyển qua VNOJ (Thông báo). Đề bài trên VNOI và vn.spoj.com sẽ không được cập nhật nữa. Một số đề bài không chính xác sẽ chỉ được cập nhật trên VNOJ. Bạn vẫn có thể tìm kiếm đề bài trên VNOI.

Link đọc đề trên VNOJ

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, SUCC_2, PRED và PRED_2, in ra 'empty' nếu tập S rỗng. Đối với các thao tác SUCC, SUCC_2, PRED và PRED_2, 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, SUCC_2, PRED, PRED_2 lần lượt được mã hóa bởi các chỉ số 1 2 3 4 5 6 7 8.

Dữ liệu

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| ≤ 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.

Kết quả

Đố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.

Ví dụ

Dữ liệu
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

Kết quả
empty
5
10
7
no
10
7
10
7

Gợi ý

Bạn hãy dùng cấu trúc set trong thư viện STL của C++. Bài này bạn chỉ nộp được bằng C++ mà thôi.


  • Người up: paulmcvn
  • Nguồn bài: © VNOI