#include #include #include using namespace std; #define Keytree (ch[ ch[root][1] ][0]) const int maxn = 100010; struct node { int num,id; }in[maxn]; int id[maxn]; int cmp(node a,node b){ if(a.num!=b.num) return a.numr) return ; int mid=(l+r)>>1; Newnode(x,f); map[id[mid]]=x; build(ch[x][0],l,mid-1,x); build(ch[x][1],mid+1,r,x); pushup(x); } void init(int n){ int i; pre[0]=ch[0][0]=ch[0][1]=0; size[0]=flip[0]=tot=0; for(i=1;i<=n;i++) { scanf("%d",&in[i].num); in[i].id=i; } sort(in+1,in+n+1,cmp); for(i=1;i<=n;i++) id[in[i].id]=i; map[id[1]] = 1; map[id[n]] = 2; Newnode(root,0); Newnode(ch[root][1],root); build(Keytree,2,n-1,ch[root][1]); pushup(ch[root][1]); pushup(root); } void solve(int n){ for(int i=1;i<=n;i++){ Splay(map[i],0); printf("%d",i+size[ch[root][0]]); if(i