You should use the statndard input/output
in order to receive a score properly.
Do not use file input and output
Please be very careful.
*/
import java.util.Scanner;
/*
As the name of the class should be Algorithm , using Algorithm.java as the filename is recommended.
In any case, you can execute your program by running 'java Algorithm' command.
*/
class Main {
static int[] arr;
static int[] aux;
static int[] finalarr;
public static void main
(String[] args
){ Scanner sc
=new Scanner
(System.
in); int T=sc.nextInt();
for(int tc=0;tc<T;tc++){
int n=sc.nextInt();
arr=new int[n];
aux=new int[n];
finalarr=new int[n];
int nblue=0;
int nwhite=0;
for(int i=0;i<arr.length;i++){
arr[i]=sc.nextInt();
if(arr[i]==0)
nwhite++;
else
nblue++;
}
System.
out.
println("Case #"+(test_case
+1)); if(nblue==arr.length){
}
else{
if(checkpossible(0,nwhite,nblue)){
//System.out.println("possible");
for(int i=0;i<finalarr.length;i++){
System.
out.
print(finalarr
[i
]+" "); }
}
else{
}
}
}
}
public static boolean checkpossible(int index,int nwhite,int nblue){
if(index==arr.length){
return true;
}
else if(nwhite==0){
return false;
}
for(int i=0;i<arr.length;i++){
int k=i+1;
//int b=index+1;
if(arr[i]==0){
arr[i]=-1;
nwhite--;
if(i+1<arr.length && arr[i+1]!=-1){
if(arr[i+1]==1){
arr[i+1]=0;
nwhite++;
nblue--;
}
else if(arr[i+1]==0){
arr[i+1]=1;
nblue++;
nwhite--;
}
}
if(i-1>=0 && arr[i-1]!=-1){
if(arr[i-1]==1){
arr[i-1]=0;
nwhite++;
nblue--;
}
else if(arr[i-1]==0){
arr[i-1]=1;
nblue++;
nwhite--;
}
}
if(checkpossible(index+1,nwhite,nblue)){
finalarr[index]=i+1;
return true;
}
else{
arr[i]=aux[i];
nwhite++;
if(i-1>=0 && arr[i-1]!=-1){
if(aux[i-1]==1){
arr[i-1]=1;
nwhite--;
nblue++;
}
else if(aux[i-1]==0){
arr[i-1]=0;
nblue--;
nwhite++;
}
}
if(i+1<arr.length && arr[i+1]!=-1){
if(aux[i+1]==1){
arr[i+1]=1;
nwhite--;
nblue++;
}
else if(aux[i+1]==0){
arr[i+1]=0;
nblue--;
nwhite++;
}
}
}
}
}
return false;
}
}
WW91IHNob3VsZCB1c2UgdGhlIHN0YXRuZGFyZCBpbnB1dC9vdXRwdXQKCmluIG9yZGVyIHRvIHJlY2VpdmUgYSBzY29yZSBwcm9wZXJseS4KCkRvIG5vdCB1c2UgZmlsZSBpbnB1dCBhbmQgb3V0cHV0CgpQbGVhc2UgYmUgdmVyeSBjYXJlZnVsLiAKKi8KCmltcG9ydCBqYXZhLnV0aWwuU2Nhbm5lcjsKCi8qCiAgIEFzIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBzaG91bGQgYmUgQWxnb3JpdGhtICwgdXNpbmcgQWxnb3JpdGhtLmphdmEgYXMgdGhlIGZpbGVuYW1lIGlzIHJlY29tbWVuZGVkLgogICBJbiBhbnkgY2FzZSwgeW91IGNhbiBleGVjdXRlIHlvdXIgcHJvZ3JhbSBieSBydW5uaW5nICdqYXZhIEFsZ29yaXRobScgY29tbWFuZC4KICovCmNsYXNzIE1haW4gewogICAgc3RhdGljIGludFtdIGFycjsKCXN0YXRpYyBpbnRbXSBhdXg7CglzdGF0aWMgaW50W10gZmluYWxhcnI7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKXsKCQlTY2FubmVyIHNjPW5ldyBTY2FubmVyKFN5c3RlbS5pbik7CgkJaW50IFQ9c2MubmV4dEludCgpOwoJCWZvcihpbnQgdGM9MDt0YzxUO3RjKyspewoJCQlpbnQgbj1zYy5uZXh0SW50KCk7CgkJCWFycj1uZXcgaW50W25dOwoJCQlhdXg9bmV3IGludFtuXTsKCQkJZmluYWxhcnI9bmV3IGludFtuXTsKCQkJaW50IG5ibHVlPTA7CgkJCWludCBud2hpdGU9MDsKCQkJZm9yKGludCBpPTA7aTxhcnIubGVuZ3RoO2krKyl7CgkJCQlhcnJbaV09c2MubmV4dEludCgpOwoJCQkJaWYoYXJyW2ldPT0wKQoJCQkJCW53aGl0ZSsrOwoJCQkJZWxzZQoJCQkJCW5ibHVlKys7CgkJCX0KCQkJU3lzdGVtLm91dC5wcmludGxuKCJDYXNlICMiKyh0ZXN0X2Nhc2UrMSkpOwoJCQlpZihuYmx1ZT09YXJyLmxlbmd0aCl7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oLTEpOwoJCQl9CgkJCWVsc2V7CgkJCQlpZihjaGVja3Bvc3NpYmxlKDAsbndoaXRlLG5ibHVlKSl7CgkJCQkJLy9TeXN0ZW0ub3V0LnByaW50bG4oInBvc3NpYmxlIik7CgkJCQkJZm9yKGludCBpPTA7aTxmaW5hbGFyci5sZW5ndGg7aSsrKXsKCQkJCQkJU3lzdGVtLm91dC5wcmludChmaW5hbGFycltpXSsiICIpOwoJCQkJCX0KCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsKCQkJCX0KCQkJCWVsc2V7CgkJCQkJU3lzdGVtLm91dC5wcmludGxuKCItMSIpOwoJCQkJfQoJCQl9CgkJfQoJCgl9CglwdWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2twb3NzaWJsZShpbnQgaW5kZXgsaW50IG53aGl0ZSxpbnQgbmJsdWUpewoJCWlmKGluZGV4PT1hcnIubGVuZ3RoKXsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCQoJCWVsc2UgaWYobndoaXRlPT0wKXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlmb3IoaW50IGk9MDtpPGFyci5sZW5ndGg7aSsrKXsKCQkJaW50IGs9aSsxOwoJCQkvL2ludCBiPWluZGV4KzE7CgkJCWlmKGFycltpXT09MCl7CgkJCQlhcnJbaV09LTE7CgkJCQlud2hpdGUtLTsKCQkJCWlmKGkrMTxhcnIubGVuZ3RoICYmIGFycltpKzFdIT0tMSl7CgkJCQkJaWYoYXJyW2krMV09PTEpewoJCQkJCQlhcnJbaSsxXT0wOwoJCQkJCQlud2hpdGUrKzsKCQkJCQkJbmJsdWUtLTsKCQkJCQl9CgkJCQkJZWxzZSBpZihhcnJbaSsxXT09MCl7CgkJCQkJCWFycltpKzFdPTE7CgkJCQkJCW5ibHVlKys7CgkJCQkJCW53aGl0ZS0tOwoJCQkJCX0KCQkJCX0KCQkJCWlmKGktMT49MCAmJiBhcnJbaS0xXSE9LTEpewoJCQkJCWlmKGFycltpLTFdPT0xKXsKCQkJCQkJYXJyW2ktMV09MDsKCQkJCQkJbndoaXRlKys7CgkJCQkJCW5ibHVlLS07CgkJCQkJfQoJCQkJCWVsc2UgaWYoYXJyW2ktMV09PTApewoJCQkJCQlhcnJbaS0xXT0xOwoJCQkJCQluYmx1ZSsrOwoJCQkJCQlud2hpdGUtLTsKCQkJCQl9CgkJCQl9CgkJCQlpZihjaGVja3Bvc3NpYmxlKGluZGV4KzEsbndoaXRlLG5ibHVlKSl7CgkJCQkJZmluYWxhcnJbaW5kZXhdPWkrMTsKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCX0KCQkJCWVsc2V7CgkJCQkJYXJyW2ldPWF1eFtpXTsKCQkJCQlud2hpdGUrKzsKCQkJCQlpZihpLTE+PTAgJiYgYXJyW2ktMV0hPS0xKXsKCQkJCQkJaWYoYXV4W2ktMV09PTEpewoJCQkJCQkJYXJyW2ktMV09MTsKCQkJCQkJCW53aGl0ZS0tOwoJCQkJCQkJbmJsdWUrKzsKCQkJCQkJfQoJCQkJCQllbHNlIGlmKGF1eFtpLTFdPT0wKXsKCQkJCQkJCWFycltpLTFdPTA7CgkJCQkJCQluYmx1ZS0tOwoJCQkJCQkJbndoaXRlKys7CgkJCQkJCX0KCQkJCQl9CgkJCQkJaWYoaSsxPGFyci5sZW5ndGggJiYgYXJyW2krMV0hPS0xKXsKCQkJCQkJaWYoYXV4W2krMV09PTEpewoJCQkJCQkJYXJyW2krMV09MTsKCQkJCQkJCW53aGl0ZS0tOwoJCQkJCQkJbmJsdWUrKzsKCQkJCQkJfQoJCQkJCQllbHNlIGlmKGF1eFtpKzFdPT0wKXsKCQkJCQkJCWFycltpKzFdPTA7CgkJCQkJCQluYmx1ZS0tOwoJCQkJCQkJbndoaXRlKys7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQkKCQkJfQoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9Cgp9Cgo=
MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAowIDEgMSAwIDAgMSAwIDEgMCAxCjEzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKMSAxIDEgMCAwIDAgMSAwIDEgMCAxIDEgMQo1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjEgMSAxIDEgMSA=
3
10
0 1 1 0 0 1 0 1 0 1
13
1 1 1 0 0 0 1 0 1 0 1 1 1
5
1 1 1 1 1