Hệ thống Buddy System quản lý một vùng nhớ kích thước 2K đơn vị. Khi cần cấp phát size đơn vị, kích thước thực tế được cấp là lũy thừa của 2 nhỏ nhất ≥ size (gọi là bậc/order o, kích thước 2o). Ban đầu toàn vùng nhớ là MỘT khối trống bậc K.
Ví dụ: K=4 (vùng nhớ 16 đơn vị). A 1 5 (cần 5 đơn vị ⇒ bậc 3, kích thước 8) cấp tại địa chỉ 0; A 2 3 (bậc 2, kích thước 4) cấp tại địa chỉ 8; A 3 4 (bậc 2) cấp tại địa chỉ 12; F 1; A 4 8 (bậc 3) cấp lại tại địa chỉ 0 (khối vừa giải phóng); F 2; F 3 (hai khối bậc 2 liền buddy được hợp nhất thành khối bậc 3 tại địa chỉ 8).
Dòng đầu: hai số nguyên K, q (0≤K≤20, 0≤q≤2000).
q dòng tiếp theo, mỗi dòng A id size (1≤ size ≤2K, id chưa cấp phát) hoặc F id (id đang được cấp phát).
In q dòng kết quả theo thứ tự thao tác: với A id size in địa chỉ bắt đầu (là bội số của 2o) nếu thành công, in -1 nếu thất bại; với F id in OK.
Với ví dụ trên, kết quả là:
0
8
12
OK
0
OK
OK
Ví dụ:
Đầu vào:
4 7
A 1 5
A 2 3
A 3 4
F 1
A 4 8
F 2
F 3
Đầu ra:
0
8
12
OK
0
OK
OK
Đầu vào:
1 3
A 1 2
A 2 1
A 3 10
Đầu ra:
0
-1
-1
Đang tải editor...