結果
| 問題 |
No.3335 ReCT
|
| コンテスト | |
| ユーザー |
kidodesu
|
| 提出日時 | 2025-11-07 22:59:17 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 6,009 bytes |
| コンパイル時間 | 358 ms |
| コンパイル使用メモリ | 82,908 KB |
| 実行使用メモリ | 79,020 KB |
| 最終ジャッジ日時 | 2025-11-07 22:59:28 |
| 合計ジャッジ時間 | 11,633 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | RE * 2 |
| other | AC * 71 WA * 12 RE * 14 |
ソースコード
c34 = [[1, 2, 2, 2], [1, 2, 1, 2], [1, 1 ,1, 2]]
c36 = [[1, 3, 3, 3, 3, 2], [1, 3, 1, 2, 3, 2], [1, 1, 1, 2, 2, 2]]
def mainc(h0, h1, w0, w1, t):
h = h1-h0
w = w1-w0
if h < 3:
return
elif h == 3:
if w % 2:
return
elif w == 4:
for y in range(h):
for x in range(w):
Ans[h0+y][w0+x] = c34[y][x]+t
return
elif w == 6:
for y in range(h):
for x in range(w):
Ans[h0+y][w0+x] = c36[y][x]+t
return
else:
for y in range(h):
for x in range(4):
Ans[h0+y][w1-4+x] = c34[y][x]+t
mainc(h0, h1, w0, w1-4, t+2)
return
elif h == 4:
t0 = t+1
t1 = t+2
Ans[h0][w0] = t0
Ans[h0+1][w0] = t0
Ans[h0+2][w0] = t0
Ans[h0+3][w0] = t1
Ans[h0][w1-1] = t0
Ans[h0+1][w1-1] = t1
Ans[h0+2][w1-1] = t1
Ans[h0+3][w1-1] = t1
for y in range(h0, h1):
for x in range(w0+1, w1-1):
if not (y-h0) % 2:
Ans[y][x] = t0
else:
Ans[y][x] = t1
return
elif h == w == 5 or h > 5:
for x in range(w0, w1):
Ans[h0][x] = t+1
Ans[h1-1][x] = t+1
for y in range(h0+1, h1-1):
Ans[y][w1-1] = t+1
mainc(h0+1, h1-1, w0, w1-1, t+1)
return
else:
for y in range(h0, h1):
Ans[y][w0] = t+1
Ans[y][w1-1] = t+1
for x in range(w0+1, w1-1):
Ans[h1-1][x] = t+1
mainc(h0, h1-1, w0+1, w1-1, t+1)
return
T4 = [[2, 2, 2, 3], [1, 2, 3, 3], [1, 1, 4, 3], [1, 4, 4, 4]]
T5 = [[5, 5, 5, 5], [2, 2, 5, 3], [1, 2, 3, 3], [1, 1, 4, 3], [1, 4, 4, 4]]
def maint(h0, h1, w0, w1, t):
h = h1-h0
w = w1-w0
if h < 4:
return
elif h == 4:
P = [2, 3, 1, 4]
for y in range(h):
for x in range(-2, 2):
if x < 0:
Bns[y+h0][x+w1] = T4[y][x]+t
else:
Bns[y+h0][x+w0] = T4[y][x]+t
for y in range(h):
for x in range(w0+2, w1-2):
Bns[y+h0][x] = P[y]+t
return
elif h == 5:
P = [5, 2, 3, 1, 4]
for y in range(h):
for x in range(-2, 2):
if x < 0:
Bns[y+h0][x+w1] = T5[y][x]+t
else:
Bns[y+h0][x+w0] = T5[y][x]+t
for y in range(h):
for x in range(w0+2, w1-2):
Bns[y+h0][x] = P[y]+t
return
elif h <= 7:
t0 = t+1
t1 = t+2
t2 = t+3
for y in range(h0, h1):
Bns[y][w1-1] = t0
for x in range(w0+2, w1-1):
Bns[h1-2][x] = t0
Bns[h1-1][x] = t1
Bns[h1-2][w0] = t2
Bns[h1-2][w0+1] = t1
Bns[h1-1][w0] = t1
Bns[h1-1][w0+1] = t1
maint(h0, h1-2, w0, w1-1, t+2)
return
else:
for y in range(-2, 2):
for x in range(-2, 2):
if y < 0 and x < 0:
Bns[y+h1][x+w1] = T4[y][x]+t
elif y < 0:
Bns[y+h1][x+w0] = T4[y][x]+t
elif x < 0:
Bns[y+h0][x+w1] = T4[y][x]+t
else:
Bns[y+h0][x+w0] = T4[y][x]+t
for y in range(h0+2, h1-2):
Bns[y][w0] = t+1
Bns[y][w0+1] = t+2
Bns[y][w1-2] = t+4
Bns[y][w1-1] = t+3
for x in range(w0+2, w1-2):
Bns[h0+0][x] = t+2
Bns[h0+1][x] = t+3
Bns[h1-2][x] = t+1
Bns[h1-1][x] = t+4
maint(h0+2, h1-2, w0+2, w1-2, t+4)
return
def mainct(h0, h1, w0, w1, t):
h = h1-h0
w = w1-w0
if h < 3:
return
elif h == 3:
t0 = t+1
t1 = t+2
for y in range(h0, h1):
Cns[y][w0] = t0
Cns[y][w1-1] = t1
for x in range(w0+1, w1-1):
for y in range(h0, h1):
if (y-h0) % 2:
Cns[y][x] = t0
else:
Cns[y][x] = t1
return
elif h == 4:
t0 = t+1
t1 = t+2
t2 = t+3
for y in range(h0, h1-1):
Cns[y][w0] = t0
Cns[y][w1-1] = t1
for x in range(w0+1, w1-1):
for y in range(h0, h1-1):
if (y-h0) % 2:
Cns[y][x] = t0
else:
Cns[y][x] = t1
Cns[h0+2][w0+1] = t2
for x in range(w0, w1):
Cns[h0+3][x] = t2
return
else:
for x in range(w0, w1):
Cns[h0][x] = t+1
Cns[h1-1][x] = t+1
for y in range(h0+1, h1-1):
Cns[y][w1-1] = t+1
mainct(h0+1, h1-1, w0, w1-1, t+1)
return
h, w = map(int, input().split())
assert max(h, w) > 5
f = 0
if h > w:
h, w = w, h
f = 1
Ans = [[-1 for _ in range(w)] for _ in range(h)]
Bns = [[-1 for _ in range(w)] for _ in range(h)]
Cns = [[-1 for _ in range(w)] for _ in range(h)]
mainc(0, h, 0, w, 0)
maint(0, h, 0, w, 0)
mainct(0, h, 0, w, 0)
ma0 = ma1 = mb0 = mb1 = mc0 = mc1 = 0
for y in range(h):
for x in range(w):
ma0 = min(ma0, Ans[y][x])
ma1 = max(ma1, Ans[y][x])
mb0 = min(mb0, Bns[y][x])
mb1 = max(mb1, Bns[y][x])
mc0 = min(mc0, Cns[y][x])
mc1 = max(mc1, Cns[y][x])
if f:
Ans = [[Ans[y][x] for y in range(h)] for x in range(w)]
Bns = [[Bns[y][x] for y in range(h)] for x in range(w)]
Cns = [[Cns[y][x] for y in range(h)] for x in range(w)]
if ma0 == -1:
print(-1)
else:
print(ma1)
for a in Ans:
print(*a)
if mb0 == -1:
print(-1)
else:
print(mb1)
for a in Bns:
print(*a)
if mc0 == -1:
print(-1)
else:
print(mc1)
for a in Cns:
print(*a)
kidodesu