比赛 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;
}