You are on page 1of 2

char map[5000][5000];

unsigned long long int permute(unsigned long long int n) {


if(n == 0) return 1;
unsigned long long int sum = 1;
while(n) {
sum *= n--;
}
return sum;
}

void infect(unsigned long long int i, unsigned long long int j, unsigned long lo
ng int row,unsigned long long int column) {
if(i >= 0 && i < row && j >= 0 && j < column && map[i][j] == 'Y') {
map[i][j] = 'N';
infect(i - 1, j, row, column);
infect(i, j - 1, row, column);
infect(i, j + 1, row, column);
infect(i + 1, j, row, column);
}
}
unsigned long long int Group(int mn,char ** grid)
{
unsigned long long int solution=0;
unsigned long long int field=0;
unsigned long long int i,j;
unsigned long long int row=mn;
unsigned long long int col;
col = strlen(*(grid));
for(i=0;i<row;grid++)
{
for(j=0;j<col;(*(grid))++)
{
map[i][j] = (*(*(grid)));
j++;
}
i++;
}

for(i = 0; i < row; j = 0, i++) {


for(j=0; j < col; j++) {
if(map[i][j] == 'Y') {
field++;
infect(i, j, row, col);
}
}
}
if(field) {
for(; j <= field; j++) {
if(j % 2 == 0) {
solution += (unsigned long long int)(permute(fie
ld) / ( permute(j) * permute(field - j)) );
}
}
}
return((unsigned long long int)((solution)%1000000007));
}

You might also like