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] Ring Buffer - Trạng thái head/tail sau thao tác

    Ring buffer (bộ đệm vòng)

    Ring buffer kích thước C dùng mảng vòng với hai chỉ số head (đọc) và tail (ghi), khởi tạo head=tail=0, số phần tử count=0.

    • W x — nếu chưa đầy (count < C): ghi vào vị trí tail, rồi tail=(tail+1)%C, count+=1. Nếu đầy: bỏ qua.
    • R — nếu chưa rỗng: đọc vị trí head, rồi head=(head+1)%C, count-=1. Nếu rỗng: bỏ qua.

    In ba số sau khi xử lý hết: head, tail, count.

    Ví dụ

    C=3: W a,W b,R,W c → tail đi 0→1→2, head 0→1, count: 1,2,1,2 ⇒ head=1 tail=0 count=2.

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

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

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

      1 ≤ C ≤ 10^5, 1 ≤ n ≤ 2000.

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

      Ba số nguyên cách nhau dấu cách: head, tail, count.

    Ví dụ:

    Đầu vào:

    3 4
    W a
    W b
    R
    W c
    

    Đầu ra:

    1 0 2

    Giải thích:

    tail: 0→1→2 (W a,W b), R: head 0→1, W c: tail 2→0 ⇒ head=1 tail=0 count=2.

    Đang tải editor...