#define MAXN 100000
using namespace std;
int txt[MAXN+1],temp[MAXN+1];
int main (void){
int n,k;
cin>>n>>k;
for (int i=1;i<=n;i++) txt[i]=i;
for (int p=1;p<=k;p++){
int a,b,c;cin>>a>>b>>c;a--;
if (c>b){
int pos=0;
for (int i=b+1;i<=c;i++)
temp[pos++]=txt[i];
for (int i=a+1;i<=b;i++)
temp[pos++]=txt[i];
for (int i=a+1,j=0;i<=c&&j<pos;i++,j++)
txt[i]=temp[j];
}
else if (c<a){
int pos=0;
for (int i=a+1;i<=b;i++)
temp[pos++]=txt[i];
for (int i=c+1;i<=a;i++)
temp[pos++]=txt[i];
for (int i=c+1,j=0;i<=b&&j<pos;i++,j++)
txt[i]=temp[j];
}
}
for (int i=1;i<=9;i++)
cout<<txt[i]<<endl;
cout<<txt[10];
//while(1);
return 0;
}
/*
13 3
6 12 1
2 9 0
10 13 8
=======
6
7
8
9
10
11
12
2
3
4
*/
我的程序同样模拟
也是错的:
#include<iostream>
using namespace std;
int a[100010],b[100001];
int main(){
int i,j,n,k,A,B,C,d,e;
cin>>n>>k;
for(i=1;i<=n;i++)a[i]=i;
for(i=1;i<=k;i++){
cin>>A>>B>>C;
for(j=A,d=0;j<=B;j++,d++)
b[d]=a[j];
if(C<=A)
{for(j=B,d=A-1;j>=C+1;j--,d--)
a[j]=a[d];
for(j=C+1,d=0;d<=B-A;j++,d++)
a[j]=b[d];}
else {for(j=A,d=B+1;d<=C;j++,d++)
a[j]=a[d];
for(d=j-1,e=0;e<=A-B;d++,e++)
a[d]=b[e];}
}
for(i=1;i<=10;i++)cout<<a[i]<<endl;
}