Cho ba loại cốc trong mảng p, đĩa trong mảng q, và m giá. Kiểm tra có thể sắp xếp gọn gàng không.
Điều kiện gọn gàng: 1) Một giá không chứa cả cốc và đĩa. 2) Một giá tối đa 5 cốc. 3) Một giá tối đa 10 đĩa.
Ví dụ: p=[4,3,7], q=[5,9,10], m=11 → Tổng cốc=14 cần 3 giá, tổng đĩa=24 cần 3 giá, tổng cần 6 ≤ 11 → True.
Thuật toán
- Tính tổng cốc
sum_p, tổng đĩasum_q. - Số giá cho cốc:
m_p = ceil(sum_p / 5) = (sum_p + 4) // 5. - Số giá cho đĩa:
m_q = ceil(sum_q / 10) = (sum_q + 9) // 10. - Trả về True nếu
m_p + m_q <= m.
Ví dụ code
def is_valid(p, q, m):
sum_p = sum(p)
sum_q = sum(q)
m_p = (sum_p + 5 - 1) // 5
m_q = (sum_q + 10 - 1) // 10
return m_p + m_q <= m
p = [4, 3, 7]
q = [5, 9, 10]
m = 11
print(is_valid(p, q, m))
Input
[4, 3, 7], [5, 9, 10], 11
Output
True