// Halle 1 #include #include #include #include #include #include ifstream in("dice.in"); int ds = 0; char x[51][51]; int w,h; int iidots; int dots[5000]; bool Read() { ++ds; in >> w >> h; if (h==0 && w==0 ) return false; for (int i=0;i> x[i]; } return true; } void dfsp(int i, int j) { // cout << "p " << i << " " <0 && x[i][j-1]=='X') dfsp(i,j-1); if (j0 && x[i-1][j]=='X') dfsp(i-1,j); x[i][j]='*'; } void dfsw(int i, int j) { if (x[i][j]=='X') { dfsp(i,j); dots[iidots]++; } x[i][j]='/'; if (j>0 && (x[i][j-1]=='*' || x[i][j-1]=='X') ) dfsw(i,j-1); if (j0 && (x[i-1][j]=='*' || x[i-1][j]=='X') ) dfsw(i-1,j); // x[i][j]='.'; } int cmp(const void *a, const void *b) { return +1*(*((int*) a)-*((int*)b)); } void Run() { char xx; iidots=0; cout << "Throw " << ds << endl; for (int i=0; i