Untitled

 avatar
unknown
plain_text
a year ago
1.6 kB
4
Indexable
#include<iostream>
using namespace std;
int T,N,K,a[1001],key[1001],res,a2[1001];
void out(){
	for (int i=1 ;i<=K;i++){
		cout<<key[i]<<" ";
	}
	cout<<endl;
}
void tinh(int k){
	int count=0;
	for (int i=1;i<=N;i++){
		if(a[i]==0){
			count+1;
		}
	}
	if(count>res)
		res=count;
}
void reset2(){
	for (int i=0;i<=N;i++){
		a[i]=a2[i];
	}
}
void switchK(){
	for(int i=1;i<=N;i++){
		int k=key[i];
		if(k>0){
			for (int j=0;j<=N;j++){
				int index=k+(k+1)*j;
				if(index>0&&index<=N){
					if(a[index]==0) a[index]=1;
					else if(a[index]==1) a[index]=0;
				}
				else break;
			}
		}
	}
	int count=0;
	for (int i=1;i<=N;i++){
		if(a[i]==0){
			count++;
		}
	}
	if(count>res)
		res=count;
	reset2();
}
void tohop1(int x){
	for (int i=key[x-1]+1;i<=K-1+x;i++){
		key[x]=i;
		if(x==1){
			//out();
			switchK();
		}
		else tohop1(x+1);
	}

}
void tohop2(int x){
	for (int i=key[x-1]+1;i<=K-2+x;i++){
		key[x]=i;
		if(x==2){
			//out();
			switchK();
		}
		else tohop2(x+1);
	}

}
void tohop3(int x){
	for (int i=key[x-1]+1;i<=K-3+x;i++){
		key[x]=i;
		if(x==3){
			//out();
			switchK();
		}
		else tohop3(x+1);
	}
}
void reset(){
	for (int i=0;i<=N;i++){
		key[i]=0;
	}
}

int main(){
//	freopen("input1.txt","r",stdin);
	cin>>T;
	for (int t=1;t<=T;t++){
		cin>>N>>K;
		reset();
		res=0;
		for (int i=1;i<=N;i++){
			cin>>a2[i];
			a[i] = a2[i];
			if(a[i]==0) {
				res++;
			}
		}
		tohop1(1);
		tohop2(1);
		tohop3(1);
		cout<<"#"<<t<<" "<<res<<endl;
	}	
	return 0;
}
Editor is loading...
Leave a Comment