Tạm biệt người bạn của tôiLiz và Lilly đã từng là hai người bạn rất thân thiết nhưng gần đây do một số bất đồng không thể tháo gỡ nên cuối cùng họ đã quyết định nói lời chia tay với nhau
Trang 1Tạm biệt người bạn của tôi
Liz và Lilly đã từng là hai người bạn rất thân thiết nhưng gần đây do một số bất đồng không thể tháo gỡ nên cuối cùng họ đã quyết định nói lời chia tay với nhau Họ đều nói: ″Tao không muốn thấy mặt mày thêm lần nào nữa! Tao sẽ xếp những khối đá sao cho dù đi đâu tao cũng không nhìn bao giờ thấy mặt mày nữa!″
Họ sống trong một ngôi làng nhỏ được chia thành lưới ô vuông kích thước n*n Liz thường sống ở góc trên bên trái lưới (vị trí (1,1)) và Lilly sống ở góc dưới bên phải lưới (vị trí (n,n)) Mỗi ô vuông có thể là khu đất trống, hồ nước hoặc khối đá Họ không thể đi qua khối đá hoặc
hồ nước Họ không thể nhìn xuyên qua khối đá nhưng họ có thể nhìn qua khu đất bằng hoặc
hồ nước Khi di chuyển, họ chỉ có thể đi theo bốn hướng: bắc, nam, đông, tây và mỗi lần chỉ đi qua được một ô vuông Cả hai người đều bị cận nên họ chỉ có thể nhìn không quá k ô vuông (cùng hàng hoặc cùng cột) ở trước mặt họ Họ không thể đi hay nhìn qua các ô nằm chéo nhau
Vì cả hai rất lười nên họ chỉ muốn xếp số khối đá ít nhất Mỗi khối đá chỉ có thể xếp vào một ô vuông mà một trong hai cô gái có thể đi đến từ nhà mình Hãy nhớ, họ đều không muốn xếp những khối đá quá gần nhà mình, do đó mỗi khối đá phải nằm ở ô vuông cách nhà họ ít nhất
m ô vuông
Khoảng cách giữa hai lưới ô vuông (x1,y1), (x2,y2) được tính là |(x1 - x2)| + |(y1 - y2)|
Dữ liệu vào: Lấy từ file văn bản friend.inp
- Dòng đầu tiên chứa 3 số nguyên n, k, m (5≤n≤20, 1≤k≤n, 1≤m≤n) cách nhau bởi một ký
tự trống
- Dòng thứ i trong n dòng tiếp theo, mỗi dòng chứa n ký tự viết hoa chỉ sơ đồ ngôi làng Ký tự
′O′ chỉ hồ nước, ′*′ chỉ khối đá và ′.′ chỉ khu đất trống
Dữ liệu ra: Đưa ra file văn bản friend.out:
- Dòng đầu là số khối đá ít nhất cần xếp để ngăn cách hai người
- Các dòng tiếp theo là toạ độ đặt các khối đá, trên mỗi dòng các toạ độ cách nhau bởi một dấu cách
Nếu không tìm được kết quả, hãy hiển thị số −1 trên dòng tương ứng
Ví dụ:
friend.inp
7 4 4
*
* O
* * * O
*
O O *
friend.out
2
2 6
4 3
(Không cần kiểm tra dữ liệu vào)