trang chủ / đề bài / dhbb23_cntt_11_b

Lật bánh

Đề bài

Mô tả

Minh muốn dùng bữa. Anh ấy vừa trở về từ cửa hàng, nơi anh ấy mua một chiếc bánh rán, việc còn lại chỉ là rán chín lên. Dòng chữ trên bao bì nói rằng chiếc bánh cần được rán trong chảo ở lửa vừa phải trong chính xác 2×N giây: rán chính xác N giây ở một mặt và chính xác N giây ở mặt còn lại. Minh đã tìm được một chiếc chảo và đốt lửa vừa phải, nhưng sau đó anh nhận ra rằng mình có thể không lật được chiếc bánh đúng vào thời điểm N giây sau khi bắt đầu rán.

Minh quá bận rộn và chỉ có thể lật bánh ở một số thời điểm nhất định. Cụ thể, có K khoảng thời gian mà anh ấy có thể lật bánh, khoảng thứ i bắt đầu từ thời điểm li giây đến thời điểm ri giây kể từ khi bắt đầu rán: Minh có thể lật bánh tại bất kỳ thời điểm nào thuộc đoạn [li,ri] (kể cả hai đầu mút). Mỗi lần lật diễn ra tức thời; tại mỗi thời điểm, mặt đang nằm dưới chảo là mặt được rán.

Minh quyết định rằng không cần thiết phải lật bánh đúng một lần, thay vào đó anh có thể lật nhiều lần, miễn là khi kết thúc 2×N giây, mỗi mặt của chiếc bánh đã được rán đúng N giây.

Yêu cầu: Hãy giúp Minh xác định liệu anh có thể hoàn thành kế hoạch hay không khi chỉ được lật bánh trong các khoảng thời gian đã cho, và nếu được thì số lần lật bánh ít nhất cần thực hiện là bao nhiêu.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên N và K (1≤N≤5×105, 1≤K≤100).
  • K dòng tiếp theo, mỗi dòng chứa hai số nguyên li và ri (0≤li≤ri≤2×N), nghĩa là Minh có thể lật bánh tại bất kỳ thời điểm nào trong đoạn [li,ri].
  • Dữ liệu bảo đảm li>ri−1 với mọi 2≤i≤K.

Dữ liệu ra

In ra số lần lật bánh ít nhất cần thực hiện. Nếu không thể rán bánh đúng yêu cầu, in ra −1.

Ràng buộc

  • 1≤N≤5×105
  • 1≤K≤100
  • 0≤li≤ri≤2×N; li>ri−1 với mọi 2≤i≤K

Subtasks

  • Subtask 1 (20% số test): N≤10.
  • Subtask 2 (20% số test): N≤1000.
  • Subtask 3 (20% số test): kết quả không quá 2 lần lật.
  • Subtask 4 (20% số test): N≤105.
  • Subtask 5 (20% số test): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
10 2
3 5
11 13
2 Không thể lật đúng tại giây 10. Lật tại giây 3 và giây 13: mặt thứ nhất được rán từ 0 đến 3 và từ 13 đến 20 (tổng 10 giây), mặt thứ hai được rán từ 3 đến 13 (10 giây).
10 3
3 5
9 10
11 13
1 Lật một lần tại giây 10 (thuộc đoạn [9,10]).
1 2
0 0
2 2
-1 Chỉ có thể lật tại giây 0 hoặc giây 2, khi đó một mặt luôn được rán đủ 2 giây nên không thể thực hiện.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0