Problems
Валидатор к игре в тетрис
Валидатор к игре в тетрис
Напомним условие задачи Тетрис:
\textit{В процессе игры в Тетрис связные фигуры (т. е. связные, если идти по 4-м направлениям) падают вниз в колодец из N строк и 20 столбцов. Каждая фигура помечена уникальной буквой английского алфавита от "A" до "Z". Фигуры, пока они падают, ни двигать, ни вращать нельзя. Ваша программа должна по описанию колодца определить, в каком порядке падали блоки.}
\textit{Формат входных данных}
\textit{Первая строка входного файла содержит целое число N (0 ≤ N ≤ 50) --- количество строк в колодце. Каждая из следующих строк содержит по 20 символов, каждый из которых --- это либо буква от "A" до "Z", либо символ "." (ASCII 46), обозначающий пустую клетку.}
Вам требуется написать валидатор тестов к этой задаче.
\InputFile
Входной файл содержит несколько тестов. Каждый тест дан в следующем формате:
Число \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{50}) и \textbf{N} строк из 2\textbf{0} символов каждая.
Символы могут иметь ASCII коды от \textbf{32} до \textbf{127}.
Сумма \textbf{N} по всем тестам не превысит \textbf{500000}.
\OutputFile
Для каждого теста выведите \textbf{YES} или \textbf{NO} --- корректен тест или нет.
Тест считается корректным, если выполнены все следующие условия:
\begin{itemize}
\item Используются только символы "\textbf{A..Z}" и "\textbf{.}"
\item Фигура (т.е. множество всех клеток с некоторой буквой) образует связную область.
\item Никакая фигура не "висит в воздухе".
\item Фигуры действительно могли упасть в таком порядке.
\end{itemize}
Input example #1
6 ...........XX....... ..........MMMM...... ..........K......... ........KKK......... .....ZAAA.FFF....... .....ZZZA..F.B...... 2 ??.................. ??.................. 3 AAB................. ABB................. AAB................. 3 .................... AA.................. ..B................. 1 A..................A 1 ABCDEFGHIJKLMNOPQRST
Output example #1
YES NO NO NO NO YES