显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100010
int h[MAXN],p[MAXN],ans[MAXN];
int n,m,k,l,r;
void ksm(int idx){
while(idx>0){
if(idx%2==1){
for(int i=1;i<=n;i++)h[i]=ans[i];
for(int i=1;i<=n;i++){
ans[i]=h[p[i]];
}
}
for(int i=1;i<=n;i++)h[i]=p[i];
for(int i=1;i<=n;i++)p[i]=h[p[i]];
idx/=2;
}
}
int main(){
freopen("usaco_Feb_swap.in","r",stdin);
freopen("usaco_Feb_swap.out","w",stdout);
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
p[i]=i,ans[i]=i;
}
for(int i=1;i<=m;i++){
cin>>l>>r;
for(int j=l;j<=r;j++){
h[j]=p[r-j+l];
}
for(int j=1;j<=n;j++){
if(h[j])p[j]=h[j];
h[j]=0;
}
// for(int i=1;i<=n;i++)cout<<p[i];
// cout<<endl;
}
ksm(k);
for(int i=1;i<=n;i++)cout<<ans[i]<<endl;
// return cerr<<clock()<<"ms"<<endl,0;
return 0;
}