Lập lịch công việc

Xem PDF

Nộp bài


Điểm: 15 (thành phần)
Thời gian: 1.0s
Bộ nhớ: 512M

Tác giả:
Dạng bài

Cho một máy (machine) có khả năng thực hiện tuần tự các công việc (task) theo chỉ định trước. Mỗi công việc sẽ được máy thực hiện đầy đủ trong một khoảng thời gian tức thì (tuy nhiên, máy sẽ cần thêm một giây nghỉ ngơi trước khi thực hiện công việc tiếp theo).

Có \(n\) công việc lần lượt được đẩy vào hàng đợi của máy. Công việc thứ \(i\) được đẩy vào hàng đợi ở thời điểm \(t_i\) và sẽ ra khỏi hàng đợi vào cuối giây thứ \(d_i\) kể từ thời điểm đó (bất kể đã được máy thực hiện hay chưa). Tại một thời điểm, máy chỉ có thể chọn một công việc đang ở trong hàng đợi để thực hiện. Bạn hãy đề xuất một cách chỉ định trình tự thực hiện để máy hoàn thành được nhiều công việc nhất có thể nhé.

Input
  • Dòng đầu chứa số nguyên dương \(n\) \(\left(1\leq n\leq 2\times 10^5\right)\).
  • Dòng thứ \(i\) trong \(n\) dòng tiếp theo chứa hai số nguyên dương \(t_i\) và \(d_i\) \(\left(1\leq t_i,d_i\leq 10^{18}\right)\).
Output
  • Gồm một số nguyên duy nhất thể hiện số công việc tối đa mà máy có thể hoàn thành (trong phương án tối ưu).
Ví dụ
Sample input 01
5
1 1
1 1
1 2
1 4
2 1
Sample output 01
4
Giải thích

Ta có thể mô phỏng trình tự làm việc của máy như sau:

  • Ở giây \(1\): Công việc \(1\), \(2\), \(3\), \(4\) được đẩy vào hàng đợi. Máy chọn thực hiện công việc \(3\).
  • Ở giây \(2\): Công việc \(5\) được đẩy vào hàng đợi. Máy chọn thực hiện công việc \(1\). Sau đó, công việc \(2\) ra khỏi hàng đợi.
  • Ở giây \(3\): Máy chọn thực hiện công việc \(5\).
  • Ở giây \(4\): Máy chọn thực hiện công việc \(4\).
Sample input 02
2
1 1
2024 2024
Sample output 02
2
Sample input 03
10
1 2
1 4
2 1
2 4
3 2
4 1
4 1
4 1
5 1
5 1
Sample output 03
6