中级光能
题目链接: 酷町堂:7145
#include<iostream>
using namespace std;
long long n,m,p,q,a[100005],s;
int Find(int p){
for(int i=1;i<=n;i++)
if(a[i]==p)
return i;
}
void f1(int p){
int idx=Find(p);
for(int i=idx-1;i>=1;i--){
a[i+1]=a[i];
}
a[1]=p;
}
void f2(int p){
int idx=Find(p);
for(int i=idx+1;i<=n;i++){
a[i-1]=a[i];
}
a[n]=p;
}
void f3(int p,int q){
int idx1=Find(p),idx2=Find(q);
if(idx1==idx2){
return;
}
if(idx1<idx2){
for(int i=idx1;i<idx2;i++){
a[i]=a[i+1];
}
a[idx2]=p;
}else{
for(int i=idx1-1;i>=idx2+1;i--){
a[i+1]=a[i];
}
a[idx2+1]=p;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
a[i]=i;
}
while(m--){
cin>>s;
if(s==1){
cin>>p;
f1(p);
}else if(s==2){
cin>>p;
f2(p);
}else{
cin>>p>>q;
f3(p,q);
}
}
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}