VM 08 Bài 16 - Xếp hình

Xem dạng PDF

Gửi bài giải


Điểm: 0,59 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
VNOI Marathon '08 - Round 5/DivAProblem Setter: Ngô Minh Ðức
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Bờm và Cuội cùng nhau chơi trò chơi xếp hình. Trò chơi gồm một dải gồm ~L~ ô vuông có kích thước ~1 \times 1~ và các thanh ngang có kích thước ~1xS~ (gồm ~S~ khối hộp ~1\times 1~ gắn liền nhau). Nhiệm vụ của Bờm là xếp một số thanh ngang này lên dải ô vuông, sao cho hai thanh ngang liên tiếp phải cách nhau ít nhất ~D~ ô vuông (nghĩa là có ít nhất ~D~ ô trống ở giữa hai thanh ngang).

Để tăng độ khó của trò chơi, Cuội còn đưa ra một số điều kiện cho Bờm. Mỗi điều kiện của Bờm có dạng: "ô thứ ~i~ phải có khối hộp" hoặc "ô thứ ~i~ không được có khối hộp".

Hãy giúp Bờm xác định xem có tồn tại cách xếp thỏa mãn yêu cầu của Cuội hay không. Nếu tồn tại, hãy cho biết số thanh ngang nhiều nhất mà Bờm xếp được là bao nhiêu.

Input

  • Dòng đầu tiên: chứa 3 số nguyên ~L~, ~S~, ~D~ ~(1 \le L \le 10^5)~.
  • Dòng thứ hai: chứa số nguyên ~K~ là số yêu cầu của Cuội.
  • ~K~ dòng tiếp theo, mỗi dòng chứa hai số nguyên ~i, d~ (~d=1~ hoặc ~d=2~) thể hiện một yêu cầu của Cuội: ~d=1~ cho biết "ô ~i~ phải có khối hộp" còn ~d=2~ cho biết "ô ~i~ không được có khối hộp". Các giá trị ~i~ được đưa ra theo thứ tự tăng dần.

Output

Nếu không tồn tại cách xếp thỏa mãn yêu cầu của Cuội, in ra ~-1~. Nếu không, in ra số thanh ngang nhiều nhất mà Bờm có thể sử dụng.

Sample Input 1

10 4 2
2
2 1
5 2

Sample Output 1

2

Sample Input 2

4 2 1
2
1 1
3 1

Sample Output 2

-1

Bình luận

Hãy đọc nội quy trước khi bình luận.


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