记录编号 459036 评测结果 AAAAAAAAAA
题目名称 [Tyvj 1728]普通平衡树 最终得分 100
用户昵称 GravatarkZime 是否通过 通过
代码语言 C++ 运行时间 0.543 s
提交时间 2017-10-12 13:53:38 内存使用 9.85 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
 
char buf[(int) 1e7], *fs = buf;
 
inline int gn() { 
    int k = 0, f = 1;
    char c = *(fs)++;
    for (; !isdigit(c); c = *fs++) if (c == '-') f = -1;
    for (; isdigit(c); c = *fs++) k = k * 10 + c - '0';
    return k * f;
}
 
vector<int> a;
vector<int>::iterator p;
int N, t, opt;

int main() {
    freopen("phs.in", "r", stdin);
    freopen("phs.out", "w", stdout);
    fread(buf, 1, (int)1e7, stdin);
    a.reserve(100001);
    N = gn();
    while (N--) { 
        opt = gn(), t = gn();
        if (opt == 1) 
            a.insert(upper_bound(a.begin(), a.end(), t), t);
        else if (opt == 2) 
            a.erase(lower_bound(a.begin(), a.end(), t));
        else if (opt == 3)
            printf("%ld\n", lower_bound(a.begin(), a.end(), t) - a.begin() + 1);
        else if (opt == 4)
            printf("%d\n", a[t - 1]);
        else if (opt == 5) { 
            p = lower_bound(a.begin(), a.end(), t);
            printf("%d\n", *(--p));
        } else { 
            printf("%d\n", *upper_bound(a.begin(), a.end(), t));
        }
    }
}