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] Per-IP Limit: Giới hạn riêng từng IP

    Giới hạn riêng theo IP (Fixed Window reset)

    Mỗi IP có bộ đếm riêng theo Fixed Window reset (cửa sổ độ dài W, tối đa N/cửa sổ/IP). Cho danh sách request gồm timestamp và IP, in ALLOW/DENY cho từng request.

    Thuật toán

    Dùng map ip -> {win, count}. Với mỗi request, tính cửa sổ của t; nếu khác cửa sổ đã lưu của IP đó thì reset; áp dụng giới hạn N.

    Ví dụ

    W=10, N=1: (0,A) ALLOW, (1,A) DENY, (1,B) ALLOW.

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

      Dòng 1: W N. Dòng 2: Q. Q dòng: t ip (timestamp và chuỗi IP cách nhau dấu cách).

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

      1 ≤ W ≤ 1e6; 1 ≤ N ≤ 1000; 1 ≤ Q ≤ 2000; IP là chuỗi không khoảng trắng. timestamp không giảm.

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

      Q dòng ALLOW/DENY.

    Ví dụ:

    Đầu vào:

    10 1
    3
    0 A
    1 A
    1 B
    

    Đầu ra:

    ALLOW
    DENY
    ALLOW

    Giải thích:

    A đã dùng hết 1 suất ở cửa sổ đầu nên (1,A) DENY; B độc lập nên ALLOW.

    Đang tải editor...