CPPSET - Tập hợp động

Tags: set, data-structure

Problem

https://vn.spoj.com/problems/CPPSET

https://oj.vnoi.info/problem/CPPSET

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ụ

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

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


Tutorial

Bài đơn giản luyện tập set trong C++


Submission

CPPSET.cpp