排序机械臂

#include<bits/stdc++.h>

using namespace std;

const int N =100010,Inf=0x7fffff;

int root;
int idx,a[N],cnt=0;

struct node{
    int s[2],p,v;
    int size;
    void init(int _v,int _p){
        v=_v,p=_p;
        size=1;
    }
}tr[N];

void pushup(int x) {
    tr[x].size = tr[tr[x].s[0]].size + tr[tr[x].s[1]].size + 1;
}

void rotate(int x)  // 旋转
{
    int y = tr[x].p, z = tr[y].p;
    int k = tr[y].s[1] == x;
    tr[z].s[tr[z].s[1] == y] = x, tr[x].p = z;
    tr[y].s[k] = tr[x].s[k ^ 1], tr[tr[x].s[k ^ 1]].p = y;
    tr[x].s[k ^ 1] = y, tr[y].p = x;
    pushup(y), pushup(x);
}

void splay(int x, int k)  // splay操作
{
    while (tr[x].p != k)
    {
        int y = tr[x].p, z = tr[y].p;
        if (z != k)
            if ((tr[y].s[1] == x) ^ (tr[z].s[1] == y)) rotate(x);
            else rotate(y);
        rotate(x);
    }
    if (!k) root = x;
}

void insert(int v){
    int u=root,p=0;
    while(u)p=u,u=tr[u].s[v>tr[u].v];
    u=++idx;
    if (p) tr[p].s[v>tr[p].v]=u;
    tr[u].init(v,p);
    splay(u,0);
    //return u;
}

int get(int v){
    int u,res;
    while(u){
        if(tr[u].v >= v) res = v;
        else u=tr[u].s[1];        
    }
    return res;
}

int get_k(int k) {
    int u = root;
    while (true) {
        //pushdown(u);
        if (tr[tr[u].s[0]].size >= k) u = tr[u].s[0];
        else if (tr[tr[u].s[0]].size + 1 == k) return u;
        else k -= tr[tr[u].s[0]].size + 1, u = tr[u].s[1];
    }
    return -1;
}



int main(){
    int T;
    cin>>T;
    //int L = insert(-Inf),R = insert(Inf);
    insert(-Inf),insert(Inf);
    while(T--){
        int T_M,T_U,k;
        cin>>T_M>>T_U;
        for(int i = 1;i <= T_M;i++){
            cin>>a[i];
        }
        for(int i = 1;i <= T_U;i++){
            cin>>k;
            int kt=k;
            while(kt!=0){
                kt--;
                cnt++;
                //int rt = 
                insert(a[cnt]);
            }
            int temp=get(i);
            cout<<temp<<endl;
        }
    }
    return 0;
}

 

posted @ 2021-07-14 17:26  limited_Infinite  阅读(35)  评论(0编辑  收藏  举报
// //返回顶部 //返回顶部按钮