0
已解决
李泽屿
新手启示者
新手启示者
题目链接: 酷町堂:7145
#include<iostream>
using namespace std;
int n,m,p,q,t,a[100005];
int f(int u){
for(int i=1;i<=n;i++){
if(a[i]==u) return i;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) a[i]=i;
while(m--){
cin>>t;
if(t==1){
cin>>p;
int pos=f(p);
for(int i=pos;i>=2;i--){
a[i]=a[i-1];
}
a[1]=p;
}else if(t==2){
cin>>p;
int pos=f(p);
for(int i=pos;i<n;i++){
a[i]=a[i+1];
}
a[n]=p;
}else{
cin>>p>>q;
int u=f(p),v=f(q);
if(u<v){//在前面
if(v==n){
for(int i=u;i<=v;i++){
a[i]=a[i+1];
}
}else{
for(int i=u;i<=v-1;i++){
a[i]=a[i+1];
}
}
a[v]=p;
}else if(u>v){//在后面
for(int i=u;i>=v+2;i--){
a[i]=a[i-1];
}
a[v+1]=p;
}
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
诶,TLE 90分