60 pts 求调
查看原帖
60 pts 求调
1398636
yezhengjie0000001楼主2025/7/26 10:27
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m,k;
struct node{
	ll l,r;
}q[101];
int f[100001][21];
int ans[100001];
int ask(int i,int j){
	int l=q[j].l,r=q[j].r;
	if(l<=i&&i<=r){
		return l+r-i;
	}else{
		return i;
	}
}
int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=m;i++){
		cin>>q[i].l>>q[i].r;
	}
	for(int i=1;i<=n;i++){
		int t=i;
		for(int w=1;w<=m;w++){
			t=ask(t,w);
		}
		f[i][0]=t;
	}
	int lg=0;
	for(int j=1;(1<<j)<=k;j++){
		for(int i=1;i<=n;i++){
			f[i][j]=f[f[i][j-1]][j-1];
		}
		lg=j;
	}
	for(int i=1;i<=n;i++){
		int t=i;
		int tt=k;
		for(int j=lg;j>=0;j--){
			if(tt>=(1<<j)){
				tt-=1<<j;
				t=f[t][j];
			}
		}
        ans[t]=i;
	}
	for(int i=1;i<=n;i++){
		cout<<ans[i]<<'\n';
	}
	return 0;
}
2025/7/26 10:27
加载中...