Stable Arrangement of Rooks (Codeforces 1621A)
Tags: Others, constructive algorithms

You have an $$$n \times n$$$ chessboard and $$$k$$$ rooks. Rows of this chessboard are numbered by integers from $$$1$$$ to $$$n$$$ from top to bottom and columns of this chessboard are numbered by integers from $$$1$$$ to $$$n$$$ from left to right. The cell $$$(x, y)$$$ is the cell on the intersection of row $$$x$$$ and collumn $$$y$$$ for $$$1 \leq x \leq n$$$ and $$$1 \leq y \leq n$$$.The arrangement of rooks on this board is called good, if no rook is beaten by another rook.A rook beats all the rooks that shares the same row or collumn with it.The good arrangement of rooks on this board is called not stable, if it is possible to move one rook to the adjacent cell so arrangement becomes not good. Otherwise, the good arrangement is stable. Here, adjacent cells are the cells that share a side.  Such arrangement of $$$3$$$ rooks on the $$$4 \times 4$$$ chessboard is good, but it is not stable: the rook from $$$(1, 1)$$$ can be moved to the adjacent cell $$$(2, 1)$$$ and rooks on cells $$$(2, 1)$$$ and $$$(2, 4)$$$ will beat each other. Please, find any stable arrangement of $$$k$$$ rooks on the $$$n \times n$$$ chessboard or report that there is no such arrangement.

Input: The first line contains a single integer $$$t$$$ ($$$1 \leq t \leq 100$$$) — the number of test cases.The first line of each test case contains two integers $$$n$$$, $$$k$$$ ($$$1 \leq k \leq n \leq 40$$$) — the size of the chessboard and the number of rooks.

Output: If there is a stable arrangement of $$$k$$$ rooks on the $$$n \times n$$$ chessboard, output $$$n$$$ lines of symbols . and R. The $$$j$$$-th symbol of the $$$i$$$-th line should be equals R if and only if there is a rook on the cell $$$(i, j)$$$ in your arrangement.If there are multiple solutions, you may output any of them.If there is no stable arrangement, output $$$-1$$$.

Note: In the first test case, you should find stable arrangement of $$$2$$$ rooks on the $$$3 \times 3$$$ chessboard. Placing them in cells $$$(3, 1)$$$ and $$$(1, 3)$$$ gives stable arrangement.In the second test case it can be shown that it is impossbile to place $$$3$$$ rooks on the $$$3 \times 3$$$ chessboard to get stable arrangement.

Sample Inputs:
5
3 2
3 3
1 1
5 2
40 33

Sample Outputs:
..R
...
R..
-1
R
.....
R....
.....
....R
.....
-1

Solution (Python):
for i in range(int(input())):
    (n, k) = map(int, input().split())
    if (n + 1) // 2 < k:
        print(-1)
    else:
        for i in range(n):
            if (i + 1) % 2 == 0:
                print('.' * n)
            elif (i + 1) % 2 != 0 and i + 1 <= 2 * k - 1:
                print('.' * i + 'R' + '.' * (n - i - 1))
            else:
                print('.' * n)

Solution (Python):
t = int(input())
for i in range(t):
    (n, k) = map(int, input().split())
    c = (n + 1) // 2
    if k > c:
        print(-1)
    else:
        for j in range(n):
            r = list('.' * n)
            if j % 2 == 0 and k != 0:
                r[j] = 'R'
                k -= 1
            print(''.join(r))

Solution (Python):
from sys import stdin
input = lambda : stdin.buffer.readline().decode().strip()
for _ in range(int(input())):
    (n, k) = map(int, input().split())
    if k > n + 1 >> 1:
        print(-1)
    else:
        g = [['.'] * n for _ in range(n)]
        for i in range(0, min(2 * k, n), 2):
            g[i][i] = 'R'
        for row in g:
            print(''.join(row))