链表の奇怪做法
#include<bits/stdc++.h>
using namespace std;
int n,x,y,tot,head=-1;
int e[10010],ne[10010];
void find(int a){
int ans=0;
for(int i=head;i!=-1&&e[i]<a;i=ne[i],ans++);
cout<<ans+1<<endl;
}
void pimi(int a){
int i=head;
for(;i!=-1&&a>1;i=ne[i]) a--;
cout<<e[i]<<endl;
}
void last(int a){
for(int i=head;i!=-1;i=ne[i])
if(e[ne[i]]==a){
cout<<e[i]<<endl;
return;
}
cout<<-2147483647<<endl;
}
void next(int a){
for(int i=head;i!=-1;i=ne[i])
if(e[i]==a){
cout<<e[ne[i]]<<endl;
return;
}
cout<<2147483647<<endl;
}
void addi(int a){
if(tot==0){
e[tot]=a;ne[tot]=-1;head=tot;tot++;
return;
}
if(e[head]>a){
e[tot]=a;ne[tot]=head;head=tot;tot++;
return;
}
int pre=head;
for(int i=head;i!=-1;i=ne[i]){
if(e[i]>a&&i!=-1){
e[tot]=a;ne[tot]=ne[i];ne[pre]=tot;tot++;
return;
}
pre=i;
}
e[tot]=a;ne[tot]=-1;ne[pre]=tot;tot++;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x>>y;
switch(x){
case 1:find(y);break;
case 2:pimi(y);break;
case 3:last(y);break;
case 4:next(y);break;
case 5:addi(y);break;
}
}
return 0;
}