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

    solution

    Đề bài: [Hệ điều hành] Producer-Consumer — trạng thái buffer

    Mô phỏng Producer-Consumer với bộ đệm vòng (bounded buffer) sức chứa C. Trạng thái: số phần tử hiện có count (ban đầu 0).

    Cho dãy thao tác P (producer thêm 1 phần tử) hoặc C (consumer lấy 1 phần tử):

    • P: nếu count < C → count += 1 (thành công). Nếu buffer đầy → thao tác bị chặn (count không đổi), tăng đếm "producer bị chặn".
    • C: nếu count > 0 → count −= 1 (thành công). Nếu buffer rỗng → bị chặn, tăng đếm "consumer bị chặn".

    In ra ba số cách nhau dấu cách: số phần tử cuối cùng trong buffer, số lần producer bị chặn (buffer đầy), số lần consumer bị chặn (buffer rỗng).

    Ví dụ: C=2, thao tác P P P C C C. P->1, P->2, P bị chặn (đầy), C->1, C->0, C bị chặn (rỗng). Kết quả: 0 1 1.

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

      Dòng đầu: C Q (sức chứa buffer, số thao tác). Q dòng tiếp, mỗi dòng là P hoặc C.

    • Ràng buộc đầu vào:

      1 ≤ C ≤ 10^9; 1 ≤ Q ≤ 100000.

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

      Ba số: số phần tử cuối, số lần producer bị chặn, số lần consumer bị chặn.

    Ví dụ:

    Đầu vào:

    2 6
    P
    P
    P
    C
    C
    C
    

    Đầu ra:

    0 1 1

    Giải thích:

    C=2. P->1, P->2, P đầy bị chặn (pblock=1), C->1, C->0, C rỗng bị chặn (cblock=1). Cuối: 0 1 1.

    Đang tải editor...