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 - Đọc theo khối, đếm số lần đọc

    Đọc pipe theo khối cố định

    Reader gọi read(fd, buf, B) đọc tối đa B byte mỗi lần. Trong pipe đang có một dãy các "đợt ghi": đợt thứ i có w[i] byte. Reader đọc lần lượt: mỗi lệnh read lấy ra min(B, tổng_byte_còn).

    Tính số lần gọi read (mỗi lần lấy min(B, còn) byte, dừng khi pipe rỗng) để đọc hết toàn bộ dữ liệu.

    Ví dụ

    B=4, các đợt ghi [3,3,4] → tổng 10 byte; số read = ceil(10/4) = 3.

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

      Dòng đầu: B m — kích thước đọc và số đợt ghi. Dòng hai: m số nguyên w[i].

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

      1 ≤ B ≤ 10^6, 1 ≤ m ≤ 1000, 1 ≤ w[i] ≤ 10^6.

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

      Một số nguyên: số lần gọi read.

    Ví dụ:

    Đầu vào:

    4 3
    3 3 4
    

    Đầu ra:

    3

    Giải thích:

    Tổng 10 byte, mỗi read tối đa 4 → ceil(10/4)=3 lần đọc.

    Đang tải editor...