#include #include int komp,bb1,bb2,prave[300][300],horne[300][300],i,j,n,z,pocx,pocy,x[2][200],y[2][200],xs[300],ys[300],xback[210000],yback[210000],fil[300][300]; int filluj(int x,int y) { fil[x][y]=1; if ((x) && (prave[x-1][y]==0) && (!fil[x-1][y])) filluj(x-1,y); if ((y) && (horne[x][y-1]==0) && (!fil[x][y-1])) filluj(x,y-1); if ((x<=pocx) && (prave[x][y]==0) && (!fil[x+1][y])) filluj(x+1,y); if ((y<=pocy) && (horne[x][y]==0) && (!fil[x][y+1])) filluj(x,y+1); return 0; } int main() { while (47) { scanf("%d ",&n); if (n==0) break; for (i=0;ixs[j]) { z=xs[i];xs[i]=xs[j];xs[j]=z;} if (ys[i]>ys[j]) { z=ys[i];ys[i]=ys[j];ys[j]=z;} } pocx=1;for (i=1;i<2*n;i++) if (xs[i]>xs[pocx-1]) xs[pocx++]=xs[i]; pocy=1;for (i=1;i<2*n;i++) if (ys[i]>ys[pocy-1]) ys[pocy++]=ys[i]; for (i=0;iy[1][i]) {z=y[0][i];y[0][i]=y[1][i];y[1][i]=z;} bb1=yback[100000+y[0][i]]; bb2=yback[100000+y[1][i]]; for (j=bb1+1;j<=bb2;j++) prave[xback[100000+x[0][i]]][j]=i+1; } else { //vodorovna if (x[0][i]>x[1][i]) {z=x[0][i];x[0][i]=x[1][i];x[1][i]=z;} bb1=xback[100000+x[0][i]]; bb2=xback[100000+x[1][i]]; for (j=bb1+1;j<=bb2;j++) horne[j][yback[100000+y[0][i]]]=i+1; } bzero(fil,sizeof(fil));komp=0; for (i=0;i<=pocx;i++) for (j=0;j<=pocy;j++) if (!fil[i][j]) {komp++;filluj(i,j);} printf("There are %d holes.\n",komp-1); } return 0; }