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 - Số chu kỳ truyền hết dữ liệu (throughput)

    Throughput của pipe

    Một pipe truyền tối đa R byte mỗi chu kỳ (tick). Có D byte dữ liệu cần truyền. Mỗi tick truyền min(R, byte_còn_lại).

    Tuy nhiên reader chỉ rút dữ liệu ra với tốc độ tối đa K byte/tick từ phía bên kia, và pipe có sức chứa C. Trong mỗi tick: trước hết writer đẩy vào pipe min(R, D_còn, C - mức_hiện) byte; sau đó reader rút ra min(K, mức_hiện) byte.

    Đếm số tick cần để toàn bộ D byte đã được reader rút ra.

    Ví dụ

    D=10, R=4, K=3, C=5. Mô phỏng từng tick cho tới khi reader rút đủ 10 byte.

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

      Một dòng gồm 4 số nguyên: D R K C.

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

      1 ≤ D ≤ 10^6, 1 ≤ R,K,C ≤ 10^6.

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

      Một số nguyên: số tick cần thiết.

    Ví dụ:

    Đầu vào:

    10 4 3 5
    

    Đầu ra:

    4

    Giải thích:

    Mỗi tick writer đẩy tối đa 4 (giới hạn bởi chỗ trống C=5), reader rút tối đa 3, lặp tới khi rút đủ 10 byte.

    Đang tải editor...