Zerojudge. j123 運貨站

題解

  1. 雖然題目的儲貨站看起來很像二維陣列,但是可以用一維陣列表示每一個row的被填滿column數就好
  2. 題目要求空格數。有一種求法是把總格數先算出來,然後減去成功放入的貨物的格數。

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)