Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Cấp phát bộ nhớ liên tục theo chiến lược First-Fit

    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 startstartstart và kích thước sizesizesize. Có mmm yêu cầu cấp phát liên tiếp, yêu cầu thứ iii cần sizeisize_isizei​ 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\ge size_i≥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 sizeisize_isizei​, size giảm sizeisize_isizei​). 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)(0,10),(20,5),(30,20)(0,10),(20,5),(30,20). Yêu cầu lần lượt 8,5,25,18,5,25,18,5,25,1: 888 cấp tại 000 (khối co còn (8,2)(8,2)(8,2)); 555 cấp tại 202020 (khối vừa hết); 252525 không khối nào đủ → FAIL; 111 cấp tại 888.

    • Định dạng đầu vào:

      Dòng 1: nnn — số khối trống ban đầu (0≤n≤1000 \le n \le 1000≤n≤100). nnn dòng tiếp: mỗi dòng "start size" (0≤start0 \le start0≤start, 1≤size≤1091 \le size \le 10^91≤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: mmm — số yêu cầu (0≤m≤5000 \le m \le 5000≤m≤500). mmm dòng tiếp: mỗi dòng một số nguyên sizesizesize (1≤size≤1091 \le size \le 10^91≤size≤109).

    • Định dạng đầu ra:

      mmm dòng, dòng thứ iii là địa chỉ cấp phát cho yêu cầu thứ iii, 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...