Để phòng ngừa bệnh dịch người ta quyết định phân phát thuốc xuống các trạm y tế để cung cấp miễn phí cho tất cả mọi người trong địa bàn. Có N trạm y tế, được đánh từ 1 đến N. Mỗi trạm dự kiến được cấp cùng một số lượng như nhau các hòm thuốc. Tất cả thuốc đã được chở về đủ tới một số trạm địa phương và đang được phân phối xuống từng trạm. Hiện tại trạm I đã nhận được P1 hòm thuốc (p1 >=0, I=1, 2, ..., N). Bệnh dịch có khả năng lây nhiễm cao. Trong vùng phát hiện mầm bệnh Bộ Y tế quyết định hạn chế mọi việc di chuyển, đi lại. Trạm I chỉ nhận hoặc chuyển thuốc với 2 trạm lân cận i-1 và i+1 (1<i<N), trạm 1 chỉ giao tiếp với trạm 2 và trạm N chỉ giao tiếp với trạm N-1. Do hạn chế về phương tiện vận chuyển nên mỗi giờ mỗi trạm chỉ có thể chuyển sang mỗi trạm lân cận một hòm thuốc. Hãy xác định sớm nhất sau bao nhiêu giờ mỗi trạm sẽ nhận đủ số hòm thuốc như kế hoạch ban đầu.
N = int(input("Nhập số trạm y tế: "))
P = [int(p) for p in input("Nhập số hòm thuốc đã nhận cho mỗi trạm, cách nhau bởi dấu cách: ").split()]
# Tính số hòm thuốc cần phân phát cho mỗi trạm
total = sum(P)
each = total // N
remain = total % N
# Tính số giờ cần để phân phát hòm thuốc đầy đủ cho mỗi trạm
times = [0] * N
for i in range(N):
# Tính số hòm thuốc cần chuyển đến trạm lân cận
need = each
if i == 0 or i == N-1:
need += remain
# Tính số giờ cần để chuyển đủ hòm thuốc cần thiết
if P[i] >= need:
times[i] = 0
else:
hours = 0
left = need - P[i]
if i > 0:
# Chuyển hòm thuốc sang trạm trước đó
prev = min(left, each)
left -= prev
hours += prev
if left > 0:
# Chuyển hòm thuốc sang trạm sau đó
if i < N-1:
next = min(left, each)
left -= next
hours += next
if left > 0:
# Chuyển hòm thuốc sang trạm trước đó nữa trong trường hợp trạm hiện tại là trạm cuối cùng
prev = min(left, each)
left -= prev
hours += prev
times[i] = hours
# In kết quả
for i in range(N):
print("Trạm", i+1, "nhận đủ số hòm thuốc sau", times[i], "giờ.")