Cho dãy số a1,…,an. Với mỗi truy vấn (l,r,k), hãy tìm phần tử nhỏ thứ k trong đoạn con al,al+1,…,ar (nếu sắp xếp đoạn con tăng dần thì đó là phần tử ở vị trí k).
Sử dụng cây phân đoạn bền vững (persistent segment tree) để mỗi truy vấn chạy trong O(logn).
Ví dụ: Dãy [3,1,2], truy vấn (1,3,2) trả về 2 vì đoạn con sắp xếp là [1,2,3], phần tử thứ 2 là 2.
Dòng đầu chứa n và q. Dòng thứ hai chứa n số nguyên. q dòng tiếp theo, mỗi dòng ba số l r k.
1≤n,q≤2⋅105, ∣ai∣≤109, 1≤l≤r≤n, 1≤k≤r−l+1.
Với mỗi truy vấn, in phần tử nhỏ thứ k trên một dòng.
Ví dụ:
Đầu vào:
3 1
3 1 2
1 3 2
Đầu ra:
2
Giải thích:
Đang tải editor...