Hình dấu cộng

Đề bài

Mô tả

Cho một bức tranh kích thước h×w gồm các ô trống (ký hiệu .) và các ô được tô (ký hiệu *).

Hãy xác định xem bức tranh có đúng một hình dấu cộng + hay không. Một hình dấu cộng được mô tả như sau:

  • Có đúng một ô tâm được tô.
  • Từ ô tâm, theo mỗi hướng trong bốn hướng (trái, phải, lên, xuống) có ít nhất một ô được tô liên tiếp. Nói cách khác, mỗi hướng đều phải có một tia với độ dài ít nhất 1.
  • Tất cả các ô còn lại của bức tranh đều trống.

Bốn tia không nhất thiết phải có cùng độ dài. Tuy nhiên, chỉ cần tồn tại thêm một ô được tô nằm ngoài hình dấu cộng, hoặc hình vẽ có bề dày lớn hơn một ô ở đâu đó, thì câu trả lời là không.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên h và w: chiều cao và chiều rộng của bức tranh.
  • h dòng tiếp theo, dòng thứ i chứa xâu si độ dài w gồm các ký tự . và *, trong đó . là ô trống và * là ô được tô.

Dữ liệu ra

In ra YES nếu bức tranh là đúng một hình dấu cộng, ngược lại in ra NO.

Ràng buộc

  • 1≤h,w≤500
  • si chỉ gồm các ký tự . và *

Ví dụ

Input Output Giải thích
5 6
......
..*...
.****.
..*...
..*...
YES Tâm nằm ở hàng 3, cột 3. Bốn tia có độ dài lần lượt là 1 (lên), 2 (xuống), 1 (trái), 2 (phải). Bốn tia không cùng độ dài nhưng điều đó vẫn hợp lệ.
3 5
....
**.
.
...
NO Hai nhánh dọc nằm ở hai cột khác nhau nên không có ô nào đóng vai trò tâm.
5 6
..**..
....
****
..**..
..**..
NO Hai nhánh dọc có bề rộng bằng 2, hình vẽ không phải dấu cộng có bề dày một ô.
7 7
.......
...*...
..****.
...*...
...*...
.......
.*.....
NO Có một ô được tô nằm ngoài hình dấu cộng (hàng 7, cột 2).
3 7
.....
.
.....
NO Bức tranh chứa hai hình dấu cộng chứ không phải một.
5 10
..........
..*.......
..*****.
..*.......
..........
NO Có một ô trống nằm bên trong hình vẽ, tia phải bị ngắt quãng.

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