比赛 |
USACO银组重赛hhh |
评测结果 |
AAAAAAAAAA |
题目名称 |
Swapity Swapity Swap |
最终得分 |
100 |
用户昵称 |
夜莺 |
运行时间 |
0.311 s |
代码语言 |
C++ |
内存使用 |
5.54 MiB |
提交时间 |
2020-03-02 18:50:01 |
显示代码纯文本
#include<cstdio>
using namespace std;
const int MAXN=100010;
int ans[MAXN],fu[MAXN],mi[MAXN];
int n,m,k;
int main(){
freopen("usaco_Feb_swap.in","r",stdin);
freopen("usaco_Feb_swap.out","w",stdout);
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++)
fu[i]=ans[i]=i;
for(int i=1,l,r;i<=m;i++){
scanf("%d%d",&l,&r);
for(int i=l;i<=r;i++)
fu[i]=ans[l+r-i];
for(int i=1;i<=n;i++)
ans[i]=fu[i];
}
for(int i=1;i<=n;i++){
mi[i]=ans[i];
ans[i]=i;
}
while(k){
if(k&1){
for(int i=1;i<=n;i++)
ans[i]=mi[ans[i]];
}
for(int i=1;i<=n;i++)
fu[i]=mi[mi[i]];
for(int i=1;i<=n;i++)
mi[i]=fu[i];
k>>=1;
}
for(int i=1;i<=n;i++)
printf("%d\n",ans[i]);
return 0;
}