Immobile Knight (Codeforces 1739A)
Tags: Implement, implementation

There is a chess board of size $$$n \times m$$$. The rows are numbered from $$$1$$$ to $$$n$$$, the columns are numbered from $$$1$$$ to $$$m$$$.Let's call a cell isolated if a knight placed in that cell can't move to any other cell on the board. Recall that a chess knight moves two cells in one direction and one cell in a perpendicular direction:   Find any isolated cell on the board. If there are no such cells, print any cell on the board.

Input: The first line contains a single integer $$$t$$$ ($$$1 \le t \le 64$$$) — the number of testcases.The only line of each testcase contains two integers $$$n$$$ and $$$m$$$ ($$$1 \le n, m \le 8$$$) — the number of rows and columns of the board.

Output: For each testcase, print two integers — the row and the column of any isolated cell on the board. If there are no such cells, print any cell on the board.

Note: In the first testcase, all cells are isolated. A knight can't move from any cell of the board to any other one. Thus, any cell on board is a correct answer.In the second testcase, there are no isolated cells. On a normal chess board, a knight has at least two moves from any cell. Thus, again, any cell is a correct answer.In the third testcase, only the middle cell of the board is isolated. The knight can move freely around the border of the board, but can't escape the middle.

Sample Inputs:
3
1 7
8 8
3 3

Sample Outputs:
1 7
7 2
2 2

Solution (Python):
def guli(n, m, i, j):
    for (di, dj) in [(2, 1), (2, -1), (-2, 1), (-2, -1), (1, 2), (1, -2), (-1, 2), (-1, -2)]:
        (ni, nj) = (i + di, j + dj)
        if ni >= 1 and ni <= n and (nj >= 1) and (nj <= m):
            return False
    return True
t = int(input())
for _ in range(t):
    (n, m) = map(int, input().split())
    gulige = []
    for i in range(1, n + 1):
        for j in range(1, m + 1):
            if guli(n, m, i, j):
                gulige.append((i, j))
    if len(gulige) > 0:
        print(gulige[0][0], gulige[0][1])
    else:
        print(1, 1)

Solution (Python):
for _ in range(int(input())):
    (n, m) = list(map(int, input().split()))
    if n == 2 and m == 3:
        print('1 2')
    elif n == 3 and m == 2:
        print('2 1')
    elif n == 3 and m == 3:
        print('2 2')
    elif n <= 2 or m <= 2:
        print('1 1')
    else:
        print('1 1')

Solution (Python):
from math import ceil
for _ in range(int(input())):
    (n, m) = map(int, input().split())
    print(ceil(n / 2), ceil(m / 2))