題解
- 雖然題目的儲貨站看起來很像二維陣列,但是可以用一維陣列表示每一個row的被填滿column數就好
- 題目要求空格數。有一種求法是把總格數先算出來,然後減去成功放入的貨物的格數。
Python 解答
block = { #ROW, COL, SIZE
"A": (4, 1, 4),
"B": (1, 3, 3),
"C": (2, 2, 4),
"D": (2, 3, 4),
"E": (3, 2, 5)
}
r, c , n = map(int, input().split())
total = r*c
out = 0
row = [0 for _ in range(r)]
for i in range(n):
ty, top = input().split()
top = int(top)
bottom = top + block[ty][0]
clone_row = row[::][top:bottom]
for i in range(block[ty][0]):
if ty == 'D' and i==0:
clone_row[i] += 1
elif ty=='E' and i==0:
clone_row[i] += 1
else:
clone_row[i] += block[ty][1]
max_R = max(clone_row)
if max_R > c:
out += 1
else:
row[top:bottom] = [max_R for _ in range(block[ty][0])]
total -= block[ty][2]
print(total, out)