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;
}

Download