DD

Để 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.

 

PG
29 tháng 6 2023 lúc 8:51

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ờ.")

Bình luận (0)

Các câu hỏi tương tự
TT
Xem chi tiết
H24
Xem chi tiết
HN
Xem chi tiết
HT
Xem chi tiết
KB
Xem chi tiết
GF
Xem chi tiết
HT
Xem chi tiết
VN
Xem chi tiết
TN
Xem chi tiết