#include int main() { int i, j, r, c, ships; bool ok; char pole[1002][1002]; scanf("%d %d\n", &r, &c); for (i=0; i<=1001; i++) { pole[0][i]='.'; pole[i][0]='.'; } while ( (r!=0) && (c!=0) ) { for (i=1; i<=r; i++) { scanf("%s\n", &pole[i][1]); pole[i][c+1]='.'; } for (i=0; i<=1001; i++) pole[r+1][i]='.'; ships=0; ok = true; for (i=1; i<=r; i++) //radek for (j=1; j<=c; j++) { //sloupec ships += ((pole[i][j]=='#') && (pole[i-1][j-1]!='#') && (pole[i-1][j]!='#') && (pole[i][j-1]!='#')) ? 1 : 0; if ((pole[i][j]=='#') && (pole[i+1][j+1] =='#')) if ((pole[i+1][j]!='#') || (pole[i][j+1]!='#')) { ok = false; goto zato; } // .# // #? if ((pole[i][j]!='#')) if ((pole[i+1][j]=='#') && (pole[i][j+1]=='#')) { ok = false; goto zato; } if ((pole[i][j]=='#') && (pole[i+1][j+1]!='#')) if ((pole[i+1][j]=='#') && (pole[i][j+1]=='#')) { ok = false; goto zato; } } zato: if (ok) printf("There are %d ships.\n", ships); else printf("Bad placement.\n"); scanf("%d %d\n", &r, &c); } return 0; }