题意:2种操作,转动或者奇偶位互换。
不论怎么交换,1的后两位一定是3,3的后两位一定是5。因此只要记录1,2的位置。
//#pragma comment(linker,"/STACK:1024000000,1024000000") #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<vector> #include<cmath> #include<queue> #include<stack> #include<map> #include<set> #include<algorithm> #include <stack> using namespace std; const int SZ=1000010,INF=0x7FFFFFFF; int arr[SZ]; int turn(int x) { if((x&1)==0)return x-1; else { return x+1; } } int main() { std::ios::sync_with_stdio(0); //freopen("d:\\1.txt","r",stdin); //for(;scanf("%d",&n)!=EOF;) { int n,m; cin>>n>>m; int one=1,two=2; for(int i=0;i<m;++i) { int type; cin>>type; if(type==1) { int step; cin>>step; one=(one+n+step-1)%n+1; two=(two+n+step-1)%n+1; } else { one=turn(one); two=turn(two); } } for(int i=0;i<n/2;++i) { arr[(one+2*i-1)%n+1]=1+2*i; arr[(two+2*i-1)%n+1]=2+2*i; } for(int i=1;i<=n;++i) { if(i!=1)cout<<" "; cout<<arr[i]; } cout<<endl; } return 0; }