[Buổi 16][Hàng đợi & Hàng đợi hai đầu][HW] Bài 2: Bộ lập lịch Round-Robin
Bộ lập lịch Round-Robin
Bối cảnh và bài toán
Một CPU xử lý n tiến trình theo Round-Robin. Ban đầu các tiến trình 1..n vào hàng theo thứ tự. Mỗi lần lấy tiến trình đầu hàng, chạy tối đa q đơn vị thời gian; nếu chưa xong thì đưa lại cuối hàng, nếu xong thì rời hệ thống.
Yêu cầu
Tính thời điểm hoàn thành của từng tiến trình.
Input
- Dòng 1:
n q. - Dòng 2:
nsốt[i]là tổng thời gian CPU cần cho tiến trình i.
Output
In n thời điểm hoàn thành theo thứ tự ID 1..n.
Ràng buộc
1 <= n <= 50001 <= q <= 10^61 <= t[i] <= 10^6Tổng số lượt chạy ceil(t[i]/q) <= 2 * 10^6
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | n <= 20 và tổng số lượt <= 500 | 01–04 |
| S2 | 30% | n <= 1000 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
3 2
3 1 4
Output
6 3 8
Giải thích. P1 chạy 2, P2 chạy 1 và xong lúc 3, P3 chạy 2, P1 chạy 1 và xong lúc 6, P3 xong lúc 8.
Ví dụ 2
Input
1 5
12
Output
12
Giải thích. Một tiến trình chạy ba lượt 5,5,2 và hoàn thành tại thời điểm 12.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M05-B16-HW02 |
| Buổi | B16 |
| Loại bài | HOMEWORK |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 40 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
Nguồn: FULLHOUSE DEV – Self-generated.
Comments