結果
| 問題 |
No.3378 Go Board
|
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2025-11-21 23:13:40 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,601 bytes |
| コンパイル時間 | 332 ms |
| コンパイル使用メモリ | 82,420 KB |
| 実行使用メモリ | 82,492 KB |
| 最終ジャッジ日時 | 2025-11-21 23:13:49 |
| 合計ジャッジ時間 | 8,674 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 18 WA * 4 |
ソースコード
def main(n, k):
if 2 * k > n * n:
return []
if k < n:
return []
Ans = [[0 for _ in range(n)] for _ in range(n)]
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