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] Pipe - Ghi khi buffer có sức chứa giới hạn

    Pipe có sức chứa giới hạn

    Pipe có sức chứa (capacity) C byte. Khi ghi k byte mà buffer không còn đủ chỗ, chỉ phần vừa khít được ghi vào, phần dư bị bỏ (mô phỏng non-blocking, ghi tối đa có thể).

    Cho capacity C và dãy thao tác:

    • W k — thử ghi k byte; chỉ ghi được min(k, chỗ trống) byte.
    • R k — đọc ra min(k, byte hiện có) byte.

    In số byte còn lại trong pipe sau khi xử lý hết.

    Ví dụ

    C=5, W 4, W 4 → lần đầu ghi 4 (buffer=4), lần hai chỉ còn 1 chỗ nên ghi 1 (buffer=5).

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

      Dòng đầu: C n. n dòng tiếp theo: W k hoặc R k.

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

      1 ≤ C ≤ 10^6, 1 ≤ n ≤ 1000, 1 ≤ k ≤ 10^6.

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

      Một số nguyên: số byte còn trong pipe.

    Ví dụ:

    Đầu vào:

    5 2
    W 4
    W 4
    

    Đầu ra:

    5

    Giải thích:

    Ghi 4 (buffer=4); lần hai chỉ còn 1 chỗ → buffer=5.

    Đang tải editor...