萌新求助,fhq连wa带T的。不知道问题出在哪,悬关求调
查看原帖
萌新求助,fhq连wa带T的。不知道问题出在哪,悬关求调
680400
xlpg0713楼主2023/8/9 20:14
#include<bits/stdc++.h>
using namespace std;
int n, opt, x, cnt;
struct node{
    int l, r, key;
    int siz, val;
}t[100005];
inline void update(int p){
    t[p].siz = t[t[p].l].siz + t[t[p].r].siz + 1;
}
inline int new_node(int x){
    t[++cnt].l = t[cnt].r = 0;
    t[cnt].siz = 1; t[cnt].val = x;
    t[cnt].key = rand() % INT_MAX;
    return cnt;
}
inline void split(int p, int k, int &l, int &r){
    if(!p){l = r = 0; return;}
    if(t[p].val <= k){
        l = p; split(t[p].r, k, t[p].r, r);
    }else{
        r = p; split(t[p].l, k, l, t[p].l);
    }update(p);
}
inline int merge(int l, int r){
    if(!l || !r) return l + r;
    if(t[l].key <= t[r].key) {
        t[l].r = merge(t[l].r, r);
        update(l); return l;
    }else{
        t[r].l = merge(l, t[r].l);
        update(r); return r;
    }
}
inline int kth(int p, int k){
    if(t[t[p].l].siz <= k) return kth(t[p].l, k);
    if(k == t[t[p].l].siz + 1) return t[p].val;
    k -= (t[t[p].l].siz + 1); return kth(t[p].r, k);
}
int main(){srand(114514);
    ios::sync_with_stdio(false); int l, r, root;
    cin.tie(0); cout.tie(0); cin >> n; int p; 
    while(n--){ cin >> opt >> x; 
        if(opt == 1){
            split(root, x, l, r);
            root = merge(merge(l, new_node(x)),r);
        }else if(opt == 2){
            split(root, x, l, r);
            split(l, x - 1, l, p);
            p = merge(t[p].l, t[p].r);
            root = merge(merge(l, p), r);
        }else if(opt == 3){
            split(root, x - 1, l, r);
            cout << t[l].siz + 1 << '\n';
            root = merge(l, r);
        }else if(opt == 4){
            cout << t[kth(root, x)].val << '\n';
        }else if(opt == 5){
            split(root, x - 1, l, r);
            cout << t[kth(l, t[l].siz)].val << '\n';
            root = merge(l, r);
        }else{
            split(root, x, l, r);
            cout << t[kth(r, 1)].val << '\n';
            root = merge(l, r);
        }
    }return 0;
}
2023/8/9 20:14
加载中...