题意:

不想讲

题解:

Rope真香!

正解是Splay缩点,访问时再拆成一个序列

代码:

 //STL dafa good!
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
#include<ext/rope>
#define inf 2147483647
#define eps 1e-9
using namespace std;
using namespace __gnu_cxx;
typedef long long ll;
rope<short>rp;
short a[],s[];
int l,r,p,tmp,n,m,op;
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)scanf("%d",&a[i]);
rp=rope<short>(a,a+n);
for(int i=;i<=m;i++){
scanf("%d",&op);
if(op==){
scanf("%d%d%d",&p,&l,&r);
tmp=;
for(int i=l;i<=r;i++)s[tmp++]=i;
rp=rp.substr(,p)+rope<short>(s,s+r-l+)+rp.substr(p,rp.size()-p);
}
if(op==){
scanf("%d%d",&l,&r);
rp=rp.substr(,l-)+rp.substr(r,rp.size()-r);
}
if(op==){
scanf("%d",&p);
printf("%d\n",rp[p-]);
}
}
return ;
}
//zhenshanren
05-11 22:59