Vòng tròn Josephus
Challenge on lesson: Checkpoint — Synthesis
**Bài toán.** n người đứng thành vòng, được đánh số vị trí 1..n theo thứ tự; người ở vị trí i mang GIÁ TRỊ a[i]. Bắt đầu đếm từ vị trí 1. Mỗi lượt: đếm k người CÒN TRONG VÒNG (kicked cuối cùng bị loại); sau khi loại, đếm tiếp từ người kế tiếp (chiều kim đồng hồ) — người kế tiếp là người CÒN LẠI đứng ngay sau người vừa bị loại. Lặp cho tới khi còn đúng một người. In GIÁ TRỊ của người sống sót. **Ràng buộc:** 2 ≤ n ≤ 2·10^5; 1 ≤ k ≤ 10^9; 0 ≤ a[i] ≤ 10^9. k lớn (tới 10^9) buộc dùng modulo số người còn lại mỗi lượt — đếm thủ công từng bước là O(k) chết. Bài chuẩn dùng Fenwick trên các VỊ TRÍ: tồn tại = 1; "người còn lại thứ j" bằng nhị phân xuống cây (kth); sau khi loại vị trí p, thứ hạng bắt đầu lượt sau là chính j (người kế tiếp chiếm chỗ thứ j trong danh sách đã co). Lưu ý riêng: hàng đợi quét vòng dừng tại phần tử SỐNG SÓT CUỐI là cách sai kinh điển.
Back to lesson: Checkpoint — Synthesis