Gang scheduling: một gang gồm nhiều thread phải chạy đồng thời trên nhiều CPU. Hệ có C CPU. Mỗi gang cần need CPU và chạy liên tục dur đơn vị thời gian. Tại một thời điểm chỉ một gang chiếm CPU (mô hình tuần tự đơn giản).
gid tăng dần (hàng đợi FIFO theo gid).t = 0. Duyệt từng gang:
need > C: gang không thể chạy → đánh dấu REJECT.t, chiếm CPU trong dur đơn vị → cập nhật t += dur.gid và thời điểm bắt đầu (hoặc REJECT), cuối cùng in makespan = tổng thời gian.C=4. Gang1 need=2 dur=3 → bắt đầu 0, t=3. Gang2 need=4 dur=2 → bắt đầu 3, t=5. makespan=5.
Dòng 1: C — số CPU.
Dòng 2: n — số gang.
n dòng: gid need dur.
1 ≤ C ≤ 1000; 1 ≤ n ≤ 100; 1 ≤ need ≤ 2000; 1 ≤ dur ≤ 1000; gid phân biệt.
n dòng: gid start (hoặc gid REJECT nếu need > C).
Dòng cuối: makespan <giá_trị>.
Ví dụ:
Đầu vào:
4
2
1 2 3
2 4 2
Đầu ra:
1 0
2 3
makespan 5
Giải thích:
Đang tải editor...