https://www.codechef.com/COOK126B/problems/MINIL

can someone tell me why this is giving wrong answer

#include

#include

#include

using namespace std;

int main(){

int t,n,m;

cin>>t;

while(t–){

cin>>n>>m;

int s[n][m],p[n][m],q[n][m];

char ch;

//using 1 for * and 0 for .

for(int i=0;i<n;i++){

for(int j=0;j<m;j++){

cin>>ch;

if(ch==’*’)

s[i][j]=1;

else

s[i][j]=0;

}

}

//creating two arrays in which horizontal and

// vertical adj cell different element

for(int i=0;i<n;i++){

for(int j=0;j<m;j++){

if(i%2==0){

if(j%2==0){

p[i][j]=1;

q[i][j]=0;

}

else{

p[i][j]=0;

q[i][j]=1;

}

}

else{

if(j%2==0){

p[i][j]=0;

q[i][j]=1;

}

else{

p[i][j]=1;

q[i][j]=0;

}

}

}

}

//check in both the possible case

//how many position are different in given

//maximum possible island, output minimum

int c1=0,c2=0;

for(int i=0;i<n;i++){

for(int j=0;j<m;j++){

if(s[i][j]!=p[i][j])

c1++;

if(s[i][j]!=q[i][j])

c2++;

}

}

cout<<min(c1,c2)<<endl;

}

}

I did exactly the same mistake as you did, but soon realised what I was missing.

Ex:

Input:

.*.

Correct output: 3

Your output: 0

Small correction to be done: check beforehand which out of p and q have more number of islands. If same, operate on both, as you are doing, else operate only on the one with more islands.