14pts求调
查看原帖
14pts求调
1042965
Hugh_Yu楼主2024/7/24 18:39
#include<bits/stdc++.h>
using namespace std;
int n,k,f[2][1000010];
long long m,x[1000010];
int main()
{
	cin>>n>>k>>m;
	for(int i=1;i<=n;i++) cin>>x[i];
	int l=1,r=k+1;
	for(int i=1;i<=n;i++)
	{
		while(r<n&&abs(x[r+1]-x[i])<abs(x[l]-x[i])) l++,r++;
		if(abs(x[r]-x[i])>abs(x[l]-x[i])) f[0][i]=r;
		else f[0][i]=l;
	}
	for(int i=1;i<-n;i++) x[i]=i;
	for(int i=0;i<=60;i++)
	{
		if(m&(1ll<<i)) for(int j=1;j<=n;j++) x[j]=f[0][x[j]];
		for(int j=1;j<=n;j++) f[1][j]=f[0][f[0][j]];
		memcpy(f[0],f[1],sizeof(f[0]));
	}
	for(int i=1;i<=n;i++) cout<<x[i]<<" ";
	cout<<endl; 
	return 0;
}
2024/7/24 18:39
加载中...