Token Bucket dung lượng C, nạp R token/giây (R nguyên), đầy lúc đầu. Khi request bị DENY, server trả về header Retry-After: số giây tối thiểu (làm tròn lên) để tích đủ 1 token kể từ t. Khi ALLOW, in 0.
Nạp token tới t. Nếu tokens >= 1: ALLOW (tokens-=1), in 0. Nếu thiếu: cần 1 - tokens token, thời gian = ceil((1 - tokens)/R).
C=1, R=1: t=0 ALLOW→0. t=0 thiếu 1 token, cần ceil(1/1)=1.
Dòng 1: C R. Dòng 2: Q. Q dòng timestamp không giảm.
1 ≤ C ≤ 1e9; 1 ≤ R ≤ 1e6; 1 ≤ Q ≤ 1000.
Q dòng: 0 nếu ALLOW, ngược lại số giây Retry-After.
Ví dụ:
Đầu vào:
1 1
2
0
0
Đầu ra:
0
1
Giải thích:
Đang tải editor...