int main() { int runs; scanf("%d", &runs); while (runs--) { int l, w; scanf("%d%d", &l, &w); if (l == 1 && w == 1) { m[0][0] = 'E'; m[0][1] = 0; } else if (l == 1) { m[0][0] = 'B', m[0][1] = 'E', m[0][2] = 'B', m[0][w] = 0; for (int i = 3; i < w; ++i) m[0][i] = '.'; } else if (w == 1) { m[0][0] = 'B', m[0][1] = 0; m[1][0] = 'E', m[1][1] = 0; m[2][0] = 'B', m[2][1] = 0; for (int i = 3; i < l; ++i) m[i][0] = '.', m[i][1] = 0; } else if (l == 2 && w != 3) { m[0][0] = 'E'; m[1][0] = 'B'; for (int i = 1; i < w; ++i) m[0][i] = '.', m[1][i] = 'B'; m[0][w] = 0; m[1][w] = 0; } else if (w == 2 && l != 3) { m[0][0] = 'E', m[0][1] = 'B', m[0][2] = 0; for (int i = 1; i < l; ++i) m[i][0] = '.', m[i][1] = 'B', m[i][2] = 0; } else if (l == 3) { for (int i = 0; i < w; ++i) m[0][i] = m[2][i] = 'B'; m[0][w] = m[2][w] = 0; m[1][0] = 'E', m[1][w] = 0; for (int i = 1; i < w; ++i) m[1][i] = '.'; } else if (w == 3) { for (int i = 0; i < l; ++i) m[i][0] = m[i][2] = 'B', m[i][1] = '.', m[i][3] = 0; m[0][1] = 'E'; } else { init(m, l, w); init(m2, w, l); go(m, l, w, 1, 0); go(m2, w, l, 0, 0); if (count_mat(m, l, w) < count_mat(m2, l, w)) { for (int i = 0; i < l; ++i) { for (int j = 0; j < w; ++j) { m[i][j] = m2[i][j]; } m[i][w] = 0; } } } //printf("\nsize %d %d, %d\n", l, w, count_mat(m, l, w)); for (int i = 0; i < l; ++i) puts(m[i]); //printf("m2, %d\n", count_mat(m2, l, w)); //for (int i = 0; i < l; ++i) puts(m2[i]); } return 0; }
void gameOfLife(vector<vector<int>>& board) { if (0 == board.size()) { return; } vector<vector<int> > count_mat(board.size(), vector<int> (board[0].size(), 0)); for (size_t i = 0; i < board.size(); ++ i) { for (size_t j = 0; j < board[i].size(); ++ j) { if (1 == board[i][j]) { for (int k = -1; k <= 1; ++ k) { for (int m = -1; m <= 1; ++ m) { if (i + k >= 0 && i + k < board.size() && j + m >= 0 && j + m < board[i + k].size() && (k | m)) { ++ count_mat[i + k][j + m]; } } } } } } for (size_t i = 0; i < count_mat.size(); ++ i) { for (size_t j = 0; j < count_mat[i].size(); ++ j) { if (count_mat[i][j] < 2 || count_mat[i][j] > 3) { board[i][j] = 0; } if (3 == count_mat[i][j]) { board[i][j] = 1; } } } }