Bắn tường

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1100 Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Có một vùng đất dạng hình chữ nhật và có thể xem là một lưới hai chiều có gồm \(N\) hàng và \(10^9\) cột. Các hàng được đánh dấu từ \(1\) tới \(N\) từ trên xuống dưới, các cột được đánh số từ \(1\) tới \(10^9\) từ trái sang phải. Giao của hàng \(i\) và cột \(j\) sẽ là ô \((i,j)\). Có \(N\) bức tường, bức tường thứ \(i\) gồm các ô liên tiếp từ \((i,L_i)\) tới \((i,R_i)\). Bạn có nhiệm vụ phải phá hủy tất cả các bức tường này. Để hoàn thành nhiệm vụ, bạn dự tính sử dụng một khẩu đại bác lớn, có thể bắn những viên đạn có kích cỡ \(D\). Với mỗi lần bắn đại bác, bạn có thể chọn cột \(j\) \((1 \leq j \leq 10^9-D+1)\), sau đó bắn viên đại bác quét sạch toàn bộ các cột từ \(j\) tới \(j+D-1\). Nếu như một bức tường nào đấy có ít nhất 1 ô bị bắn trúng, bức tường đó sẽ được xem là đã bị phá hủy. Hãy tìm cách phá hủy toàn bộ bức tường với số lần bắn ít nhất.

Input

  • Dòng đầu tiên chứa số nguyên \(N\) và \(D\) \((1 \leq N \leq 2\times 10^5, 1 \leq D \leq 10^9)\) lần lượt là số hàng của bức tường và kích thước của viên đạn mà đại bác có thể bắn.
  • \(N\) dòng tiếp theo, dòng thứ \(i\) gồm 2 số nguyên dương \(L_i, R_i\) \((1 \leq L_i \leq R_i \leq 10^9)\), cho biết bức tường thứ \(i\) gồm các ô từ \((i,L_i)\) tới \((i,R_i)\)

Output

  • Một số nguyên duy nhất là số lần bắn ít nhất cần để phá hủy toàn bộ bức tường.

Example

Test 1

Input
3 3
1 2
4 7
5 9
Output
2
Note

Đầu tiên, bạn có thể chọn cột \(2\) và phá hủy tất cả các ô thuộc cột \(2\) tới \(4\). Khi đó, bức tường thứ \(1\) và thứ \(2\) sẽ bị phá hủy. Sau đó bạn chọn cột \(5\) để bắn và phá hủy bức tường còn lại.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.