Vanya và Kho Báu
Nộp bài giải
Điểm:
8,00 (OI)
Giới hạn thời gian:
0.5s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
C++
Vanya đang ở trong một cung điện được biểu diễn bằng lưới . Mỗi ô chứa đúng một rương, rương ở hàng cột có loại .
Mỗi rương có loại chứa một chiếc chìa khóa mở được mọi rương loại . Tất cả rương loại không bị khóa. Có đúng một rương loại và nó chứa kho báu.
Vanya xuất phát từ ô (góc trên trái). Khoảng cách giữa hai ô và là (khoảng cách Manhattan). Tính tổng quãng đường nhỏ nhất Vanya phải đi để đến được rương loại .
Vanya phải mở rương theo thứ tự loại tăng dần: trước tiên đến một rương loại , rồi một rương loại , …, rồi rương loại . Tại mỗi bước, Vanya có thể di chuyển tự do trên lưới (không có chướng ngại); chỉ cần lượt thăm các rương đúng thứ tự loại.
Dữ liệu vào
- Dòng đầu chứa ba số nguyên , , .
- dòng tiếp theo, mỗi dòng gồm số nguyên — loại của rương tại ô .
Dữ liệu ra
In ra một số nguyên — tổng quãng đường nhỏ nhất.
Ràng buộc
- Với mọi từ đến , tồn tại ít nhất một rương loại .
- Có đúng một rương loại .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 4 3 2 1 1 1 1 1 1 1 2 1 1 3 |
5 | Đi từ đến ô (loại 1, bước), rồi sang ô (loại 2, bước), rồi đến ô (loại 3, bước). Có đường tối ưu khác cho tổng quãng đường bằng . |
| 3 3 9 1 3 5 8 9 7 4 6 2 |
22 | , phải đi qua đủ chín loại theo thứ tự . |
| 3 4 12 1 2 3 4 8 7 6 5 9 10 11 12 |
11 | Các rương được xếp dạng "rắn" nên đi tuần tự dọc theo đó. |
Bình luận