Cho N tiến trình (tất cả đến tại thời điểm 0) với burst, lập lịch theo độ ưu tiên KHÔNG ưu tiên ngắt (chọn tiến trình chưa chạy có priority NHỎ nhất; nếu bằng chọn ID nhỏ hơn; chạy đến hết).
Một tiến trình bị coi là "đói CPU" (starvation) nếu thời gian chờ của nó lớn hơn ngưỡng K cho trước (chờ = thời điểm bắt đầu chạy − arrival = thời điểm bắt đầu chạy, vì arrival=0).
Thuật toán:
In ra hai số cách nhau dấu cách: số tiến trình bị đói CPU, và thời gian chờ lớn nhất trong tất cả tiến trình.
Ví dụ: burst [4,3,2], priority [3,1,2], K=3. Thứ tự chạy P2(pri1):0..3, P3(pri2):3..5, P1(pri3):5..9. Chờ: P2=0,P3=3,P1=5. >3 chỉ P1 => 1 tiến trình đói, maxwait=5.
Dòng đầu: N K. N dòng tiếp: burst priority của tiến trình ID i.
1 ≤ N ≤ 100000; 0 ≤ K ≤ 10^9; 1 ≤ burst ≤ 10^6; 1 ≤ priority ≤ 10^9.
Hai số nguyên: số tiến trình đói CPU, thời gian chờ lớn nhất.
Ví dụ:
Đầu vào:
3 3
4 3
3 1
2 2
Đầu ra:
1 5
Giải thích:
Đang tải editor...