結果
| 問題 |
No.3378 Go Board
|
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2025-11-21 23:27:26 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,213 bytes |
| コンパイル時間 | 394 ms |
| コンパイル使用メモリ | 82,668 KB |
| 実行使用メモリ | 82,508 KB |
| 最終ジャッジ日時 | 2025-11-21 23:27:35 |
| 合計ジャッジ時間 | 8,612 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 18 WA * 4 |
ソースコード
def main(n, k):
if 2 * k > n * n:
return []
Ans = [[0 for _ in range(n)] for _ in range(n)]
if k < n:
if k < 3:
return []
elif k == 3:
Ans[0][0] = 1
Ans[0][1] = 1
Ans[1][0] = 1
return Ans
elif k < n:
h = k // 2
w = k - h
for y in range(h):
Ans[y][0] = 1
k -= 1
for x in range(1, w):
Ans[h-1][x] = 1
k -= 1
y, x = h-2, 1
while k:
Ans[y][x] = 1
k -= 1
x += 1
if x == w:
x = 1
y -= 1
return Ans
if k == 2 * n:
for y in range(n):
Ans[y][1] = 1
Ans[y][2] = 1
return Ans
elif k == 2 * n + 1:
Ans[0][1] = 1
Ans[0][3] = 1
Ans[1][3] = 1
for y in range(1, n):
Ans[y][1] = 1
Ans[y][2] = 1
return Ans
K = 2*k
t = K // n
s = K % n
x = t-1
cnt = 0
while x >= 0:
for y in range(s):
cnt += 1
Ans[y][x] = 1
for y in range(s, n):
if 0 <= x-1:
cnt += 1
Ans[y][x-1] = 1
else:
cnt += 1
Ans[y][x] = 1
x -= 3
if s == 0:
r = t-1
else:
r = t
y = (s-1) % n
for x in range(r):
if not Ans[y][x]:
cnt += 1
Ans[y][x] = 1
ama = k - cnt
y = x = 0
while ama:
if not Ans[y][x]:
Ans[y][x] = 1
ama -= 1
y += 1
if y == n:
y = 0
x += 1
cnt = 0
for y in range(n):
for x in range(n):
if Ans[y][x]:
cnt += 1
assert cnt == k
return Ans
for _ in range(int(input())):
n, k = map(int, input().split())
Ans = main(n, k)
if Ans:
print("Yes")
Ans = [["#" if Ans[y][x] else "." for x in range(n)] for y in range(n)]
for ans in Ans:
print("".join(ans))
else:
print("No")
kidodesu