30pts 求调
查看原帖
30pts 求调
741937
harryzhou楼主2023/10/14 19:34
#include <stdio.h>

const int N = 2000001;
int n, a[N];
int b[N], c[N];

void work1(int x){
	if(x == 1)return;
	
//	if(x == n){
//		for(register int i = n; i >= 1; --i){
//			for(register int j = 1; j <= n; ++j){
//				b[j] = b[i];
//			}
//			break;
//		}
//	}
	int y = x, i = 1;
	while(y >= 1){
		b[i] = y;
		y--;
		i++;
	} 
	while(x + 1 <= n){
		b[1 + x] = x + 1;
		x++;
	}
	for(register int i = 1; i <= n; ++i){
		c[i] = a[i];
	}
	for(register int i = 1; i <= n; ++i){
		a[i] = c[b[i]];
	}
}

void work2(int x){
	for(register int i = 1; i <= x; ++i){
		if(a[i] == 1){
			a[i] = 0;
		}else a[i] = 1;
	}
}

int main(){
	scanf("%d", &n);
	
	for(register int i = 1; i <= n; ++i){
		scanf("%d", &a[i]);
		b[i] = i;
	}
	for(register int i = 1; i <= n; ++i){
		work1(i);
		work2(i);
	}
	for(register int i = 1; i <= n; ++i){
		printf("%d ", a[i]);
	}

	return 0;
}
2023/10/14 19:34
加载中...