Cỏ dại

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: 2400 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Trên một cánh đồng mà ta có thể xem như một lưới kích thước \(R \cdot C\), mỗi ô hoặc là có cỏ dại hoặc là chưa có cỏ dại. Ban đầu, có \(N\) ô đã có cỏ dại.

Nông dân ở đây muốn phủ cỏ trên toàn bộ cánh đồng này. Mỗi năm, họ có thể chọn một hướng đông, tây, nam hoặc bắc để nhân giống các ô cỏ theo hướng đã chọn. Tức là mỗi năm, một ô đã có cỏ sẽ được nhân giống sang một ô chưa có cỏ liền kề nó theo hướng được những người nông dân lựa chọn.

Hãy tính giúp các bác nông dân xem họ cần ít nhất bao nhiêu năm để nhân giống cỏ phủ hết toàn bộ cánh đồng.

Input

  • Dòng 1: chứa hai số nguyên \(R, C\) (\(1 \le R, C \le 10^9\)).
  • Dòng 2: chứa số nguyên \(N\) (\(1 \le N \le 300\)).
  • Tiếp theo là \(N\) dòng, dòng thứ \(i\) trong đó mô tả một ô có cỏ gồm hai số nguyên \(S_i, E_i\) (\(1 \le S_i \le R; 1 \le E_i \le C\)). Không có hai ô cỏ nào có vị trí trùng nhau.

Output

  • Ghi một số nguyên duy nhất là số năm tối thiểu để các bác nông dân phủ cỏ trên toàn bộ cánh đồng.

Example

Test 1

Input
4 4
4
1 1
1 4
4 1
4 4
Output
4
Note

Giải pháp tối ưu là:

  • Năm 1: chọn nhân giống sang hướng tây
  • Năm 2: chọn nhân giống sang hướng nam
  • Năm 3: chọn nhân giống sang hướng nam

Scoring

  • Subtask 1 (5 điểm): \(R, C \le 4; N \le 16\)
  • Subtask 2 (10 điểm): \(R, C \le 40\)
  • Subtask 3 (15 điểm): \(R \le 40\)
  • Subtask 4 (30 điểm): \(N \le 25\)
  • Subtask 5 (20 điểm): \(N \le 100\)
  • Subtask 6 (20 điểm): Không có ràng buộc bổ sung

Bình luận

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

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