Can anyone find the mistake in this code?

So i have tried the Chef and rainbow array question. I do get correct answers for the given test cases on codeblocks, but when submitting codechef says wrong answer. Is something wrong with my logic? Thanks
Link to question: https://www.codechef.com/problems/RAINBOWA

My code:

 #include<stdio.h>

 int main(){

 int i,j,t,n,count7,rem,status,midstat;  
 int count1,count2,count3,count4,count5,count6;  
 int a[100];  

 scanf("%d",&t);  

 for(i=0;i<t;i++){
    scanf("%d",&n);
    count7=0;
    midstat=1;
    count6=0;
    count5=0;
    count4=0;
    count3=0;
    count2=0;
    count1=0;
    for(j=0;j<n;j++){

        scanf("%d",&a[j]);
        if(a[j]==7){
            count7++;
        }
    }
    rem=n-count7;
    if(rem%2!=0||count7==0){
            status=0;
    }

    else{
       for(j=0;j<(rem/2);j++){
        if(a[j]==a[n-1-j]){
            midstat*=1;
        }
        else{
            midstat*=0;
        }

       }

       if(midstat==1){
            for(j=0;j<rem/2;j++){
                switch(a[j]){
                    case 1:count1++;
                    break;
                    case 2:count2++;
                    break;
                    case 3:count3++;
                    break;
                    case 4:count4++;
                    break;
                    case 5:count5++;
                    break;
                    case 6:count6++;
                    break;
                }
            }
            if(count1>0&&count2>0&&count3>0&&count4>0&&count5>0&&count6>0){
                status=1;
            }
            else{
                status=0;
            }
       }


    }
  if(status==1){
    printf("yes\n");
  }
  else{
    printf("no\n");
  }

}


}

Two things-

1.Where are you checking if array has elements only in range [1,7]??
2. Another condition is, it must be palindromic. Or, as given in problem statement, if there are a2 number of 2 before 7, then there must be a2 number of 2 after it. Eg- {1,2,2,3,4,5,6,7,6,5,4,3,2,1] is nto rainbow as there are two 2's before 7 but only 1 after it in sequence.
1 Like

Here is one test case. Your program prints wrongly yes.

1
13
2 1 3 4 5 6 7 6 5 4 3 1 2
1 Like

He actually checks if the array is palindromic or not. But first one is indeed a problem.

Sorry, didnt notice it. The code is too long so kinda skimmed through it :stuck_out_tongue:
EDIT: Yes, found it. There is a for loop dedicated to that. Sorry, missed it. :slight_smile:

thanks for that. now i figured whats the problem. thanks

thanks, i found my mistake

1 Like