1 solutions

  • 0
    @ 2025-11-5 18:15:12

    C++ :

    
    #include<bits/stdc++.h>
    #define MAXN 200005
    using namespace std;	long long n,T;
    inline long long read(){
    	register char ch = getchar();
    	while(!isdigit(ch))	ch = getchar();
    	register long long rtn = 0;
    	while(isdigit(ch))	rtn = rtn*10 + ch - '0' , ch = getchar();
    	return rtn;
    }
    int a[MAXN],f[MAXN];
    
    inline void work(long long k , int h){
    	for(long long i = h;i<=n;++++i){
    		f[i] = 1 ^ a[((i-k)%n+n)%n] ^ a[(i+k)%n];
    	}
    	f[0] = f[n] , f[n] = 0;
    	for(int i = h^1;i<=n;++++i)	f[i] = -1;
    	memcpy(a,f,sizeof f);
    //	for(int i=h;i<=n;++++i)	printf("%d ",a[i]);	puts("");
    }
    
    int main(){
    //	freopen("1.in","r",stdin);
    
    	n = read()<<1 , T = read();
    
    	for(int i=1;i<=n;++++i)	a[i] = read()==1;
    
    	for(long long i = 1,bg = 1;i <= T;i<<=1)
    		if(T&i)
    			work(i,bg = (bg+i)%2);
    
    	for(int i=0;i<=n;++i)
    		if(a[i]==-1)	a[i] = 0;
    		else	if(a[i]==0)	a[i] = 2;
    	for(int i=1;i<n;++i)	printf("%d ",a[i]);
    	printf("%d",a[0]);
    	return 0;
    }
    
    
    
    • 1

    Information

    ID
    18830
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By