#include #include #define SIZE (2<<11) static int line[2][SIZE]; int main(void) { int ow, boats, r, c, i, j, field, boat, err; for (;;) { scanf("%d%d", &r, &c); if (!r && !c) break; /* init */ boats = 0; ow = 0; err = 0; memset((void *)line[0], 0, sizeof(int) * c); memset((void *)line[1], 0, sizeof(int) * c); for (i = 0; i < r+1; i++) for (j = 0; j < c; j++) { scanf(" "); if (i != r) { field = getchar(); if (field == '#') boat = 1; else boat = 0; } else boat = 0; if (boat) line[i%2][j] = line[(i+1)%2][j] + 1; else { line[i%2][j] = 0; if (line[(i+1)%2][j] != 0 && (j == 0 || line[(i+1)%2][j-1] == 0)) boats++; } if (j != 0) { if (boat) { if(line[i%2][j-1] != line[i%2][j] && line[i%2][j-1] != 0) err = 1; else if(line[i%2][j-1] == 0 && line[(i+1)%2][j-1] != 0) err = 1; } else { if (line[i%2][j-1] != 0 && line[(i+1)%2][j]) err = 1; } } } if (err) printf("Bad placement.\n"); else printf("There are %d ships.\n", boats); } return 0; }