#include #include #include #include char w[1010][1010]; int main(int ac, char ** av) { for (int i = 0; i<1005;i++) w[0][i]='.'; bool nl=0; while (1) { int xmax,ymax; scanf("%d %d\n",&xmax,&ymax); if (xmax==0 && ymax==0) break; if (nl) putchar('\n'); else nl=true; for (int i=1;i<=xmax;i++) gets(w[i]+1); for (int i=0;i<=xmax;i++){ w[i][ymax+1]='.'; } int poc=0; for (int y=1;y<=ymax;y++) { int st=0; //search for (int x=1;x<=xmax;x++) { switch (st) { case(0): //voda if (w[x][y]=='#') { if (w[x][y+1]=='#') st=1; else { st=2; poc++; } if (w[x-1][y+1]=='#') { poc=-1; goto panic; } }//if break; case(1): //shipa a pod if (w[x][y]=='#') { if (w[x][y+1]=='.') { poc=-1; goto panic; } } else { if (w[x][y+1]=='#') { poc=-1; goto panic; } st=0; } break; case(2): //shipa ve vode if (w[x][y]=='#') { if (w[x][y+1]=='#') { poc=-1; goto panic; } } else { if (w[x][y+1]=='#') { poc=-1; goto panic; } st=0; } break; default: *(int*)0=0; break; } } //for x } //for y panic: if (poc==-1) printf("Bad placement."); else printf("There are %d ships.",poc); } //while return 0; }