超时求救!!!!!
查看原帖
超时求救!!!!!
1063799
chenshenqi楼主2024/4/15 18:50
#include <bits/stdc++.h>
using namespace std;
const int N=2*1e5+5;
int a[N];
bool check(int *a,int n){
	for (int i=0; i<n; i++){
		if (a[i]!=0 and a[i+1]!=0) return false;
	}
	return true;
}
void turn(int *a,int n){
	for (int i=1; i<n; i++){
		a[i]=max(a[i]-a[i-1],0);
	}
	a[0]=a[0]-a[n-1];
	return;
}
int find(int *a,int n){
	int ans=0;
	for (int i=0; i<n; i++){
		ans+=(a[i]!=0);
	}
	return ans;
}
void print(int *a,int n){
	for (int i=0; i<n; i++){
		if (a[i]){
			printf("%d ",i+1);
		}
	}
	printf("\n");
	return;
}
int main(){
    int t;
    cin >> t;
    while (t--){
    	memset(a,0,sizeof(a));
		int n;
		cin >> n;
		for (int i=0; i<n; i++) scanf("%d ",&a[i]);
		while (!check(a,n)){
			turn(a,n);
		}
		int ans=find(a,n);
		cout << ans << "\n";
		print(a,n);
	}
	return 0;
}
2024/4/15 18:50
加载中...