結果
| 問題 |
No.77 レンガのピラミッド
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-01-14 16:18:55 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 145 ms / 5,000 ms |
| コード長 | 1,356 bytes |
| コンパイル時間 | 490 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 77,056 KB |
| 最終ジャッジ日時 | 2024-12-26 01:18:55 |
| 合計ジャッジ時間 | 3,775 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 20 |
ソースコード
N = int(input())
A = list(map(int, input().split()))
sumA = sum(A)
SW = N
SH = max(A)
rowcnt = 1
cum = 1
row = 0
while cum <= sumA:
row += 1
rowcnt += 2
cum += rowcnt
H = max(max(A), row)
W = max(N, H * 2 - 1)
#print(row,H, W)
S = []
for i in range(H):
row = []
for j in range(W):
if j < N:
if A[j] > i:
row.append("#")
else:
row.append(".")
else:
row.append(".")
S.append(row)
#print(*S, sep = "\n")
#print("====")
lines = H
ans = 99999
while lines > 0:
T = []
blocks = lines * 2 - 1
right = W - blocks
left = 0
for i in range(H):
if blocks > 0:
row = ["."] * left + ["#"] * blocks + ["."] * right
else:
row = ["."] * W
T.append(row)
right += 1
left += 1
if blocks > 1:
blocks -= 2
else:
blocks = 0
moveout = 0
movein = 0
for i in range(H):
for j in range(W):
if S[i][j] == "#" and T[i][j] == ".":
moveout += 1
if T[i][j] == "#" and S[i][j] == ".":
movein += 1
#print(*T, sep = "\n")
#print(movein, moveout)
if movein <= moveout:
ans = min(moveout, ans)
#print("---")
lines -= 1
print(ans)