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 Unix] Producer-Consumer - Trạng thái buffer giới hạn

    Producer–Consumer với buffer giới hạn

    Bài toán kinh điển: producer bỏ sản phẩm vào buffer chứa tối đa C ô; consumer lấy sản phẩm ra. Buffer là hàng đợi FIFO.

    Thao tác:

    • P x — producer thử bỏ sản phẩm x. Nếu buffer đầy, thao tác thất bại (sản phẩm bị bỏ, đếm vào blocked_p).
    • C — consumer thử lấy. Nếu buffer rỗng, thất bại (đếm vào blocked_c).

    Sau khi xử lý hết, in 3 số: số sản phẩm hiện trong buffer, blocked_p, blocked_c.

    Ví dụ

    C=2: P 1,P 2,P 3(đầy→blocked_p=1),C(lấy 1),C(lấy 2),C(rỗng→blocked_c=1) → 0 1 1.

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

      Dòng đầu: C n. n dòng: P x hoặc C.

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

      1 ≤ C ≤ 10^5, 1 ≤ n ≤ 2000, 0 ≤ x ≤ 10^9.

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

      Ba số nguyên cách nhau dấu cách: số phần tử trong buffer, blocked_p, blocked_c.

    Ví dụ:

    Đầu vào:

    2 6
    P 1
    P 2
    P 3
    C
    C
    C
    

    Đầu ra:

    0 1 1

    Giải thích:

    Bỏ 1,2; bỏ 3 thất bại (đầy); lấy 1,2; lấy lần 3 thất bại (rỗng) → 0 1 1.

    Đang tải editor...