记录编号 590964 评测结果 AAAAAAAAAA
题目名称 [USACO20 Feb Silver]Swapity Swapity Swap 最终得分 100
用户昵称 Gravatarflyfree 是否通过 通过
代码语言 C++ 运行时间 1.062 s
提交时间 2024-07-14 14:34:59 内存使用 3.84 MiB
显示代码纯文本
#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;                             
}