QOJ.ac

QOJ

Límite de tiempo: 3 s Límite de memoria: 2048 MB Puntuación total: 100

#8679. Нахиляння плиток

Estadísticas

На горищі в коробці зі старими іграшками ви знайшли дивну головоломку. Вона має вигляд прямокутної дошки з $h \times w$ квадратних клітинок. У деяких клітинках лежать кольорові плитки, як на рисунку F.1.

problem_8679_141bfaa0ba0c1196198d6deee1100655.png

Рисунок F.1: Кольорові плитки відповідають початковому розташуванню з прикладу вхідних даних 1.

Ви ще не впевнені, якою є точна мета головоломки, але вже почали досліджувати способи переставляння плиток. Їхнє розташування можна змінювати, нахиляючи дошку в одному з чотирьох основних напрямків: ліворуч, праворуч, до себе або від себе. Нахил змушує всі плитки ковзати у відповідному напрямку, доки їх не зупинить край дошки або інша плитка. За початковим і кінцевим розташуваннями визначте, чи існує послідовність нахилів, яка перетворює перше на друге. Рисунок F.2 показує нахиляння головоломки з прикладу вхідних даних 1.

problem_8679_eb20e1509cd290b03249b30fb584f1df.png

Рисунок F.2: Розв'язок для прикладу вхідних даних 1.

Вхідні дані

Перший рядок містить два цілі числа $h$ і $w$ ($1 \le h,w \le 500$), що позначають висоту й ширину дошки. Далі йдуть $h$ рядків із початковим розташуванням від верхнього ряду до нижнього. Кожен містить рядок довжини $w$, який описує клітинки зліва направо. Порожню клітинку позначає крапка (.). Якщо є плитка, її колір задається малою літерою (a-z). Різні літери позначають різні кольори, а плитки одного кольору неможливо розрізнити.

Після початкового розташування є один порожній рядок, а потім опис кінцевого розташування з $h$ рядків у тому самому форматі.

Вихідні дані

Виведіть yes, якщо існує послідовність нахилів, що перетворює початкове розташування на кінцеве, і no інакше.

Приклади

Вхідні дані 1

4 4
.r..
rgyb
.b..
.yr.

yrbr
..yr
...g
...b

Вихідні дані 1

yes

Вхідні дані 2

1 7
....x..

..x....

Вихідні дані 2

no

Вхідні дані 3

4 3
yr.
..b
ry.
b..

...
..b
.ry
byb

Вихідні дані 3

no

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.