trang chủ / đề bài / dhbb23_clk_10_b

Trò chơi đẩy bi

Đề bài

Mô tả

Trò chơi đẩy bi là một trò chơi trên lưới ô vuông vô hạn. Các dòng và cột của lưới được đánh số theo thứ tự bởi các số nguyên …,−3,−2,−1,0,1,2,3,… Các cột được đánh số theo thứ tự từ trái sang phải, còn các dòng được đánh số theo thứ tự từ dưới lên trên. Ô nằm trên giao của dòng x và cột y được gọi là ô (x,y). Trên lưới có một số ô cấm, các ô còn lại là ô tự do. Khi bắt đầu trò chơi, một số viên bi sẽ xuất hiện trên lưới, mỗi viên bi nằm gọn trong một ô tự do và không có ô nào chứa nhiều hơn một viên bi.

Người chơi phải chọn một ô tự do trên lưới làm ô hố; nếu ô được chọn làm ô hố có chứa bi thì viên bi đó sẽ biến mất. Mỗi bước, người chơi có thể chọn một ô chứa bi và đẩy viên bi đó sang một trong bốn ô chung cạnh, với điều kiện ô đó là ô tự do và hiện đang không có bi (viên bi không bao giờ được đẩy vào ô cấm). Nếu viên bi bị đẩy vào ô hố thì viên bi này sẽ biến mất. Nhiệm vụ của người chơi là đẩy hết tất cả các viên bi trên lưới vào hố với số bước ít nhất.

Ô hố có thể là bất kỳ ô tự do nào của lưới vô hạn, kể cả ô nằm ngoài phạm vi tọa độ xuất hiện trong dữ liệu vào.

Yêu cầu: Cho biết vị trí các ô cấm trên lưới và vị trí các ô có chứa bi. Hãy chọn một ô tự do làm ô hố và tìm cách đẩy tất cả các viên bi trên lưới vào hố với số bước ít nhất.

Dữ liệu vào

  • Dòng đầu tiên ghi số nguyên không âm n là số ô cấm.
  • Dòng thứ i (i=1,2,…,n) trong n dòng tiếp theo chứa hai số nguyên xi,yi mô tả ô (xi,yi) là ô cấm.
  • Dòng tiếp theo ghi số nguyên dương m là số ô chứa bi.
  • Dòng thứ j (j=1,2,…,m) trong m dòng tiếp theo chứa hai số nguyên uj,vj mô tả ô (uj,vj) là ô chứa bi.

Các ô cấm đôi một khác nhau, các ô chứa bi đôi một khác nhau và không có ô chứa bi nào là ô cấm.

Dữ liệu ra

Một dòng chứa một số nguyên là số bước ít nhất cần thiết để đẩy tất cả các viên bi trên lưới vào hố. Ghi −1 nếu không tồn tại cách chọn hố để đẩy hết tất cả các viên bi trên lưới vào hố.

Ràng buộc

  • 0≤n≤1000, 1≤m≤100.
  • Nếu n≥1 thì mọi xi,yi,uj,vj là số nguyên dương không vượt quá 100.
  • Nếu n=0 thì |uj|,|vj|≤109.

Subtasks

  • Subtask 1 (20% số điểm): n=0, m=2 và các số uj,vj là số nguyên dương không vượt quá 100.
  • Subtask 2 (20% số điểm): n=1, m=2 và các số xi,yi,uj,vj là số nguyên dương không vượt quá 100.
  • Subtask 3 (20% số điểm): n=0, m≤100 và các số uj,vj là số nguyên dương không vượt quá 100.
  • Subtask 4 (20% số điểm): n≤1000, m≤100 và các số xi,yi,uj,vj là số nguyên dương không vượt quá 100.
  • Subtask 5 (20% số điểm): n=0, m≤100 và các số uj,vj là số nguyên có giá trị tuyệt đối không vượt quá 109.

Ví dụ

Input Output Giải thích
1
2 2
2
1 2
3 2
4 Chọn ô (1,2) làm hố, viên bi ở ô này biến mất ngay. Viên bi ở ô (3,2) không đi thẳng được vì ô (2,2) là ô cấm, nên đi vòng (3,2)→(3,1)→(2,1)→(1,1)→(1,2), mất 4 bước.
0
2
1 1
5 5
8 Chọn ô (1,1) làm hố, viên bi ở ô (5,5) cần 8 bước.
8
1 1
1 3
3 1
2 1
2 3
1 2
3 2
3 3
2
2 2
5 5
-1 Tám ô cấm bao kín ô (2,2), nên viên bi ở ô (2,2) và viên bi ở ô (5,5) không thể cùng đi tới một ô hố nào.

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