Tiskan_H @ 2024-07-22 18:59:07
#include <bits/stdc++.h>
using namespace std;
int n,k,num;
int t[100010],f[100010],h[100010];
int main(){
cin>>n>>k;
for(int i=0;i<n;i++) t[i]=i+1,f[i]=i-1,h[i]=i;
for(int i=1;i<=k;i++){
int frm1,frm2,to;
int f1=0,f2=0,t1=0,dis=0;
cin>>frm1>>frm2>>to;
for(int i=1;i<=n;i++){
dis++;
if(h[i]==frm1&&f1==0) frm1=i,f1=1;
if(h[i]==frm2&&f2==0) frm2=i,f2=1;
if(h[i]==to&&t1==0)
if(frm1<=to) dis=0,t1=2;
else to=i,t1=1;
if(t1==2&&dis==frm2-frm1+1) to=i,t1=1;
}
t[f[frm1]]=t[frm2],f[t[frm2]]=f[frm1];
f[t[to]]=frm2,t[frm2]=t[to];
f[frm1]=to,t[to]=frm1;
num=0;
for(int i=t[0];i;i=t[i]) h[i]=++num;
//for(int i=t[0];i;i=t[i]) cout<<i<<" ";
//cout<<endl;
}
num=0;
for(int i=t[0];++num!=11;i=t[i]) cout<<i<<"\n";
return 0;
}
by Bao0714 @ 2024-07-22 21:53:35
#include<bits/stdc++.h>
using namespace std;
int main(){
int N,K;
cin>>N>>K;
int wen[N+1];
for(int i=1;i<=N;i++)wen[i]=i;
while(K--){
int a,b,c;
cin>>a>>b>>c;
int fu[b-a+1];
for(int i=a;i<=b;i++)fu[i-a]=wen[i];//将需要复制的部分存到fu[]数组
int xiu[N-b+a],hou[N+1];
for(int i=1;i<a;i++)xiu[i]=wen[i];
for(int i=a;i<=N-b+a-1;i++)xiu[i]=wen[i-a+b+1];//将复制的部分去掉后的原数组存入xiu[]
for(int i=1;i<=c;i++)hou[i]=xiu[i];
for(int i=c+1;i<=c+1+b-a;i++)hou[i]=fu[i-c-1];
for(int i=c+2+b-a;i<=N;i++)hou[i]=xiu[i-b+a-1];//将复制的部分存放到制定的地方
for(int i=1;i<=N;i++)wen[i]=hou[i];//将处理完的数组再赋给原数组以便于循环
}
for(int i=1;i<=10;i++)cout<<wen[i]<<endl;
return 0;
}