Cho dãy số a1,…,an và q truy vấn. Mỗi truy vấn (l,r) hỏi số giá trị phân biệt trong đoạn con al,…,ar.
Vì các truy vấn được biết trước (offline), hãy dùng thuật toán Mo để xử lý tất cả trong O((n+q)n).
Ví dụ: Dãy [1,2,1,3], truy vấn (1,4) có các giá trị phân biệt {1,2,3} nên đáp án là 3.
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 hai số l r.
1≤n,q≤105, ∣ai∣≤109, 1≤l≤r≤n.
Với mỗi truy vấn (theo thứ tự đầu vào), in số giá trị phân biệt trên một dòng.
Ví dụ:
Đầu vào:
4 1
1 2 1 3
1 4
Đầu ra:
3
Giải thích:
Đang tải editor...