canuc80k0218·19/50

Điểm Đạt Ngưỡng

Nộp bài trên LQDOJ

Bài 02 · Prefix Sum

Trên trục số nguyên từ đến có đoạn đóng. Độ phủ của một vị trí nguyên là số đoạn chứa . Vị trí được gọi là đạt ngưỡng khi độ phủ của nó không nhỏ hơn .

Với mỗi truy vấn , hãy đếm số vị trí nguyên đạt ngưỡng nằm trong đoạn đó.

Input

  • Dòng đầu chứa ba số nguyên .
  • dòng tiếp theo, mỗi dòng chứa hai số nguyên mô tả một đoạn nguồn.
  • dòng cuối, mỗi dòng chứa hai số nguyên mô tả một truy vấn.

Output

  • Với mỗi truy vấn, in trên một dòng số vị trí nguyên đạt ngưỡng trong đoạn .

Constraints

  • .
  • .
  • .
  • .

Scoring

  • Subtask ( số điểm): và mọi đầu mút không vượt quá .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

4 3 5
1 5
3 7
4 9
6 10
1 10
3 6
5 8
1 3
7 10

Output

4
3
3
0
1

Giải thích: Các vị trí được phủ bởi ít nhất đoạn là . Vì vậy truy vấn đếm được vị trí, truy vấn đếm được , còn truy vấn không có vị trí nào đạt ngưỡng.

Lời giải tóm tắt
  • Ý tưởng: Dùng mảng hiệu trên trục 1..200000: với mỗi đoạn [l,r], tăng tại l và giảm tại r+1. Tổng dồn lần thứ nhất cho cover[x], số đoạn chứa x.
  • Ý tưởng: Đặt good[x]=1 khi cover[x]≥K, ngược lại bằng 0. Xây tiếp prefix G[x]=good[1]+...+good[x]. Truy vấn [a,b] có đáp án G[b]-G[a-1].
  • Chứng minh tính đúng: Sau tổng dồn thứ nhất, mỗi đoạn đóng đóng góp đúng một đơn vị tại mọi vị trí từ l đến r, nên cover[x] chính xác. Do đó good[x] đúng chính xác khi và chỉ khi x đạt ngưỡng. Prefix thứ hai cộng các bit này; hiệu tại b và a-1 giữ lại đúng các vị trí đạt ngưỡng thuộc đoạn truy vấn. Vì vậy mọi câu trả lời đều đúng.
  • Độ phức tạp: Với V=200000, thời gian O(N+Q+V), bộ nhớ O(V).