#67. Đếm số phân biệt (Mã bài: COUNTING)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho n số, số thứ i a_i . Có m truy vấn, mỗi truy vấn cho k_i đoạn, mỗi đoạn biểu thị các số từ vị trí l_{i, j} đến r_{i, j} . Yêu cầu tìm xem trong hợp của các đoạn này có tổng cộng bao nhiêu số khác nhau.

Một phần dữ liệu yêu cầu xử lý online.

Dữ liệu:

  • Dòng đầu tiên chứa ba số nguyên n, m, p . p bằng 0 hoặc 1 , cho biết có bắt buộc xử lý online hay không.
  • Dòng thứ hai chứa n số nguyên dương, số thứ i a_i .
  • Tiếp theo là các truy vấn. Mỗi truy vấn bắt đầu bằng một dòng chứa số nguyên dương k_i , sau đó là k_i dòng, mỗi dòng chứa hai số nguyên dương l_{i, j} r_{i, j} . Nếu p = 1 và đây không phải là truy vấn đầu tiên, các giá trị l_{i, j} r_{i, j} nhập vào đã được mã hóa. Bạn cần XOR mỗi số này với đáp án của truy vấn trước, sau đó lấy modulo cho n rồi cộng 1 . Số nhỏ hơn trong hai kết quả sẽ là l_{i, j} thực tế, và số lớn hơn là r_{i, j} thực tế.

Kết quả: Đối với mỗi truy vấn, in ra một dòng chứa một số nguyên là đáp án.

Ví dụ:

Dữ liệu:

3 2 0
1 2 1
1
1 2
2
1 1
3 3

Kết quả:

2
1

Giới hạn: 1 \leq n, m, \sum k_i, a_i \leq 10^5, 1 \leq l_{i, j} \leq r_{i, j} \leq n .

  • Subtask 1: 10\% số điểm có n, m, \sum k_i, a_i \leq 5000 ;
  • Subtask 2: 10\% số điểm khác có n, m \leq 5000 ;
  • Subtask 3: 20\% số điểm khác có k_i = 1 ;
  • Subtask 4: 20\% số điểm khác có p = 0 ;
  • Subtask 5: 20\% số điểm khác có 1 \leq n, m, \sum k_i, a_i \leq 50000 ;
  • Subtask 6: 20\% số điểm còn lại không có giới hạn đặc biệt.