Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Lập trình Web & Backend] Sliding Window Log

    Sliding Window Log

    Giới hạn tối đa N request trong bất kỳ khoảng W giây trượt (t-W, t]. Lưu log timestamp các request đã ALLOW. Với request tại t: loại bỏ các log có timestamp <= t - W (đã ra ngoài cửa sổ), rồi nếu số log còn lại < N thì ALLOW (thêm t vào log), ngược lại DENY.

    Thuật toán

    Dùng hàng đợi timestamp đã ALLOW. Cửa sổ hợp lệ là (t-W, t]. Pop phần tử <= t-W.

    Ví dụ

    N=2, W=10: 0→ALLOW,5→ALLOW,9→DENY(đã 2),11→ALLOW(0 đã rời, còn 5).

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

      Dòng 1: N W. Dòng 2: Q. Q dòng timestamp không giảm.

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

      1 ≤ N ≤ 1000; 1 ≤ W ≤ 1e6; 1 ≤ Q ≤ 2000.

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

      Q dòng ALLOW/DENY.

    Ví dụ:

    Đầu vào:

    2 10
    4
    0
    5
    9
    11
    

    Đầu ra:

    ALLOW
    ALLOW
    DENY
    ALLOW

    Giải thích:

    Tại t=9 cửa sổ (-1,9] có {0,5} đủ 2 → DENY. t=11 cửa sổ (1,11] chỉ còn {5} → ALLOW.

    Đang tải editor...