MnZn用STL中的pbds58分求助
查看原帖
MnZn用STL中的pbds58分求助
648772
Liyuqiao11楼主2023/11/7 11:00
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
__gnu_pbds ::tree<pair<int, int>, __gnu_pbds::null_type, less<pair<int, int> >,
                  __gnu_pbds::rb_tree_tag,
                  __gnu_pbds::tree_order_statistics_node_update>
    trr;
int main(){
    int n,op,x,cnt=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>op>>x;
        if(op==1){
            trr.insert(make_pair(x,cnt++));
        }
        if(op==2){
            auto it=trr.lower_bound(make_pair(x,0));
            trr.erase(it);
        }
        if(op==3){
            int pos=trr.order_of_key(make_pair(x,0));
            cout<<pos+1<<endl;
        }
        if(op==4){
            auto it=trr.find_by_order(x-1);
            cout<<(*it).first<<endl;
        }
        if(op==5){
            auto it=trr.lower_bound(make_pair(x,0));
            it--;
            cout<<(*it).first<<endl;
        }
        if(op==6){
            auto it=trr.upper_bound(make_pair(x,0));
            cout<<(*it).first<<endl;
        }
    }
    return 0;
}
2023/11/7 11:00
加载中...