Bộ nhớ được biểu diễn bằng một dãy các "khối trống" (free block) rời rạc, không chồng lấn, cho trước theo thứ tự địa chỉ bắt đầu tăng dần: mỗi khối gồm địa chỉ bắt đầu start và kích thước size. Có m yêu cầu cấp phát liên tiếp, yêu cầu thứ i cần sizei byte liên tục. Áp dụng chiến lược First-Fit: với mỗi yêu cầu, duyệt danh sách khối trống theo thứ tự địa chỉ tăng dần, chọn khối đầu tiên có kích thước ≥sizei; cấp phát từ đầu khối đó (địa chỉ thấp nhất); nếu khối vừa đủ thì khối biến mất khỏi danh sách, còn dư thì khối trống co lại (start tăng thêm sizei, size giảm sizei). Nếu không khối nào đủ lớn, yêu cầu đó thất bại. (Bài này không có thao tác giải phóng.)
Yêu cầu: với mỗi yêu cầu cấp phát (theo đúng thứ tự), in địa chỉ bắt đầu được cấp phát, hoặc in FAIL nếu không thể.
Ví dụ: khối trống ban đầu (start,size): (0,10),(20,5),(30,20). Yêu cầu lần lượt 8,5,25,1: 8 cấp tại 0 (khối co còn (8,2)); 5 cấp tại 20 (khối vừa hết); 25 không khối nào đủ → FAIL; 1 cấp tại 8.
Dòng 1: n — số khối trống ban đầu (0≤n≤100). n dòng tiếp: mỗi dòng "start size" (0≤start, 1≤size≤109), đảm bảo sắp xếp tăng dần theo start và không chồng lấn. Dòng tiếp theo: m — số yêu cầu (0≤m≤500). m dòng tiếp: mỗi dòng một số nguyên size (1≤size≤109).
m dòng, dòng thứ i là địa chỉ cấp phát cho yêu cầu thứ i, hoặc FAIL.
Ví dụ:
Đầu vào:
3
0 10
20 5
30 20
4
8
5
25
1
Đầu ra:
0
20
FAIL
8
Đầu vào:
0
2
5
1
Đầu ra:
FAIL
FAIL
Đang tải editor...