Bài đơn giản luyện tập set
trong C++
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
Submission
CPPSET.cpp