trang chủ / đề bài / energrun

Olya và đồ uống tăng lực

Đề bài

Mô tả

Cho một lưới n×m ô, mỗi ô hoặc trống (.) hoặc bị chặn (#). Bạn có thể di chuyển với tốc độ k mét mỗi giây: mỗi giây, bạn chọn một trong bốn hướng (lên, xuống, trái, phải) và chạy từ 1 đến k ô liên tiếp theo hướng đó. Tất cả các ô bạn đi qua trong một giây (kể cả ô đích của giây đó) đều phải là ô trống.

Cho ô xuất phát (x1,y1) và ô đích (x2,y2), hãy tính số giây tối thiểu để đi từ (x1,y1) đến (x2,y2), hoặc thông báo nếu không thể đến được.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, k.
  • n dòng tiếp theo, mỗi dòng gồm m ký tự . hoặc # mô tả lưới.
  • Dòng cuối chứa bốn số nguyên x1, y1, x2, y2. Hai ô (x1,y1) và (x2,y2) đều là ô trống và có thể trùng nhau.

Dữ liệu ra

In ra một số nguyên duy nhất — số giây tối thiểu cần thiết để đi từ (x1,y1) đến (x2,y2), hoặc −1 nếu không thể.

Ràng buộc

  • 1≤n,m,k≤1000
  • 1≤x1,x2≤n
  • 1≤y1,y2≤m

Ví dụ

Input Output Giải thích
3 4 4
....
###.
....
1 1 3 1
3 Giây 1: chạy 3 ô sang phải đến (1,4). Giây 2: chạy 2 ô xuống đến (3,4). Giây 3: chạy 3 ô sang trái đến (3,1).
2 2 1
.#
#.
1 1 2 2
-1 Không thể đến được vì các ô lân cận đều bị chặn.
3 4 1
....
###.
....
1 1 3 1
8 Với k=1, mỗi giây chỉ đi được một ô; đường ngắn nhất dài 8 ô.

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