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] Fixed Window: Reset theo biên cửa sổ

    Fixed Window có reset

    Cửa sổ cố định độ dài W giây bắt đầu từ mốc 0: các cửa sổ là [0,W), [W,2W), [2W,3W)... Mỗi cửa sổ cho tối đa N request. Bộ đếm reset về 0 khi sang cửa sổ mới.

    Thuật toán

    Với mỗi timestamp t, tính chỉ số cửa sổ win = floor(t / W). Nếu khác cửa sổ trước thì reset bộ đếm. Nếu bộ đếm < N thì ALLOW (tăng đếm), ngược lại DENY.

    Ví dụ

    W=10, N=2: request tại 1,2,3 → ALLOW,ALLOW,DENY. Request tại 11 (cửa sổ mới) → ALLOW.

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

      Dòng 1: W N (cách nhau dấu cách). Dòng 2: Q. Q dòng: timestamp tăng dần.

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

      1 ≤ W ≤ 1e6; 1 ≤ N ≤ 1000; 1 ≤ Q ≤ 1000; timestamp không giảm.

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

      Q dòng ALLOW/DENY.

    Ví dụ:

    Đầu vào:

    10 2
    4
    1
    2
    3
    11
    

    Đầu ra:

    ALLOW
    ALLOW
    DENY
    ALLOW

    Giải thích:

    Cửa sổ [0,10): 1,2 ALLOW, 3 DENY. t=11 sang [10,20) → reset → ALLOW.

    Đang tải editor...