canuc80k3900·1/50

Giờ Cao Điểm

Nộp bài trên LQDOJ

Bài 39 · Sweep Line

Có khoảng thời gian nửa mở , biểu diễn thời gian hiện diện của đối tượng. Hãy tìm số đối tượng lớn nhất cùng hiện diện tại một thời điểm.

Input

  • Dòng đầu chứa số nguyên .
  • Mỗi trong dòng tiếp theo chứa hai số nguyên và .

Output

  • In một số nguyên là số khoảng cùng phủ một thời điểm lớn nhất.

Constraints

  • .
  • .
  • Toàn bộ thời điểm và đôi một khác nhau.
  • Khoảng hiện diện là : đối tượng không còn hiện diện tại đúng thời điểm .

Scoring

  • Subtask ( số điểm): .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

4
1 4
2 5
6 8
3 7

Output

3

Giải thích: Trong khoảng từ thời điểm đến trước , ba khoảng và cùng hoạt động; không có thời điểm nào được bốn khoảng phủ.

Lời giải tóm tắt
  • Ý tưởng: Sắp xếp các sự kiện bắt đầu/kết thúc rồi quét tổng đang hoạt động.
  • Ý tưởng: 1. Tạo sự kiện (a_i,+1) và (b_i,-1) cho mỗi khách. 2. Sắp xếp cặp (thời điểm, delta). Với cùng thời điểm, -1 tự đứng trước +1. 3. Quét từ trái sang phải, cập nhật cur += delta và lấy ans = max(ans,cur).
  • Tính đúng đắn: 1. Ngay sau khi xử lý mọi sự kiện tại thời điểm t, cur đúng bằng số khoảng [a_i,b_i) chứa t. 2. Số khách chỉ thay đổi tại một thời điểm đến hoặc rời; trên mọi khoảng giữa hai sự kiện, nó không đổi. 3. Vì ans lấy cực đại sau mọi lần thay đổi, ans bằng cực đại toàn cục.
  • Độ phức tạp: O(n log n) thời gian và O(n) bộ nhớ.
  • Lưu ý cài đặt: Nhầm khoảng đóng với nửa mở.
  • Lưu ý cài đặt: Duyệt từng thời điểm khi tọa độ rất lớn.
  • Lưu ý cài đặt: Không xác định tie-break tại cùng thời điểm.