CPPSET - Tập hợp động
Tác giả: ladpro98
Ngôn ngữ: C++
#include <bits/stdc++.h>
#define ADD 1
#define DELETE 2
#define MINIMUM 3
#define MAXIMUM 4
#define SUCC 5
#define SUCC_2 6
#define PRED 7
#define PRED_2 8
using namespace std;
set<int> S;
int main()
{
set<int> :: iterator it; int kind, x;
while (scanf("%d", &kind) == 1) {
if (kind == 0) break;
if (kind == ADD) {
scanf("%d", &x);
S.insert(x);
} else
if (kind == DELETE) {
scanf("%d", &x);
it = S.find(x);
if (it != S.end()) S.erase(it);
} else {
if (S.empty()) {printf("empty\n"); continue;}
if (kind == MINIMUM) {
it = S.begin();
printf("%d\n", *it);
} else
if (kind == MAXIMUM) {
it = S.end(); it--;
printf("%d\n", *it);
} else {
scanf("%d", &x);
if (kind == SUCC)
it = S.upper_bound(x);
else
if (kind == SUCC_2)
it = S.lower_bound(x);
else
if (kind == PRED) {
it = S.lower_bound(x); it--;
}
else
if (kind == PRED_2) {
it = S.upper_bound(x); it--;
}
if (it == S.end()) printf("no\n");
else printf("%d\n", *it);
}
}
}
return 0;
}