Phân chia nhóm
Xem dạng PDFMô tả bài toán:
Ngoài giờ học ở trường, Bình có quản lý quán trà sữa của gia đình. Hôm nay, quán rất đông khách. Để động viên Bình, cha của Bình có quy định như sau:
Chia khách hàng thành nhiều nhóm, mỗi nhóm có ~k~ người khách:
- Nhóm 1: Từ khách hàng thứ ~1~ đến khách hàng thứ ~k~.
- Nhóm 2: Từ khách hàng thứ ~k+1~ đến khách hàng thứ ~2 \times k~.
- Nhóm 3: Từ khách hàng thứ ~2 \times k+1~ đến khách hàng thứ ~3 \times k~.
- ...
- Nhóm cuối cùng có thể không đủ ~k~ người khách.
Nếu tổng tiền của mỗi nhóm khách hàng lớn hơn hoặc bằng ~p~, cha của Bình sẽ bỏ ~20,000~ đồng vào ống heo.
Yêu cầu: Ban đầu, trong ống heo của Bình không có tiền. Hãy tính tổng số tiền trong ống heo của Bình sau khi phục vụ xong các khách hàng của ngày hôm nay.
Input:
- Dòng đầu tiên chứa ba số nguyên ~n, k, p~ ~(1 \leq n \leq 10^6, 1 \leq k \leq n, 0 < p \leq 10^{12})~, giữa các số cách nhau một dấu cách.
- ~n~ dòng tiếp theo chứa ~n~ số nguyên dương ~a_1, a_2, \dots, a_n~ ~(0 < a_i \leq 10^9)~, mỗi số trên một dòng — số tiền mà khách hàng thứ ~i~ trả.
Output:
- Ghi ra màn hình duy nhất một số nguyên không âm là tổng số tiền trong ống heo của Bình sau khi phục vụ xong các khách hàng.
Ví dụ:
Input 1:
5 2 80000
48000
44000
60000
15000
34000
Output 1:
20000
Giải thích:
- Nhóm 1: ~48000 + 44000 = 92000 \geq 80000~ → được ~20000~.
- Nhóm 2: ~60000 + 15000 = 75000 < 80000~ → không được thêm.
- Nhóm 3: ~34000 < 80000~ → không được thêm.
Input 2:
4 1 1000
250
568
900
999
Output 2:
0
Giải thích: Không có nhóm nào có tổng tiền lớn hơn hoặc bằng ~1000~.
Ghi chú:
- Bài toán yêu cầu tính tổng cho từng nhóm nhanh chóng với dữ liệu lớn, nên cần sử dụng các kỹ thuật xử lý mảng hoặc cửa sổ trượt để tối ưu.
- Đảm bảo tổng số tiền ~a_i~ không bị tràn số khi tính toán.
Bình luận
Gửi bài giải
Kotlin
PyPy
Điểm:
10,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Basic
Ngôn ngữ cho phép
C
C++
Java
Pascal
Python
Scratch