12112. Ідеальний аркуш


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Степан має два аркуші \(A\) і \(B\), кожен з яких складається з чорних і прозорих квадратів, і нескінченно великий аркуш \(C\), який складається з прозорих квадратів. Існує також ідеальний аркуш \(X\) для Степана, який складається з чорних і прозорих квадратів. Розміри аркушів \(A\), \(B\) і \(X\) складають \(H_A\) ​ рядків на \(W_A\) ​ стовпців, \(H_B ​× W_B\) ​ і \(H_X ​ × W_X\) ​ відповідно. Квадрати аркуша \(A\) представлені \(H_A\) ​ рядками довжини \(W_A\), \(A_1\), \(A_2\),…, \(A_{H_A}\), що складаються з '.' і '#'. Якщо \(j\)-й символ \((1≤j≤W_A ​ )\) \(A_i\) ​ \((1≤i≤H_A ​ )\) дорівнює '.', то квадрат у \(i\)-му рядку зверху та \(j\)-му стовпчику зліва є прозорим ; якщо це '#', цей квадрат чорний.

Подібним чином квадрати аркушів \(B\) і \(X\) представлені рядками \(H_B\) ​ довжиною \(W_B ​, B_1 ​ , B_2 ​ ,…,B_{H_B}\) ​ ​ та \(H_X\) ​ рядками довжини \(W_X ​ , X_1 ​ , X_2 ​ ,…,X_{H_X}\) ​ ​ відповідно.

Мета Степана — створити аркуш \(X\), використовуючи всі чорні квадрати на аркушах \(A\) і \(B\), виконуючи наведені нижче дії з аркушами \(A, B\) і \(C\).

  • Вставте аркуші \(A\) і \(B\) на аркуш \(C\) уздовж сітки. Кожен аркуш можна вставити куди завгодно, переклавши його, але його не можна вирізати чи повернути.
  • Виріжте область \(H_X × W_X\) з аркуша \(C\) уздовж сітки. Тут квадрат вирізаного аркуша буде чорним, якщо туди вставити чорний квадрат аркуша \(А\) або \(B\), і прозорим в іншому випадку.

Визначте, чи зможе Степана досягти своєї мети, правильно вибравши місця наклеювання аркушів і область для вирізання, тобто чи зможе він задовольнити обидві наступні умови.

  • Вирізаний аркуш містить усі чорні квадрати аркушів \(А\) та \(В\). Чорні квадрати аркушів \(А\) та \(В\) можуть накладатися на розрізаний аркуш.
  • \(Вирізаний аркуш збігається з аркушем \)X~ без обертання чи перевертання.

Обмеження

  • \(1≤H_A , W_A , H_B , W_B , H_X , W_X ≤10\)
  • \(H_A , W_A , H_B , W_B , H_X , W_X\) є цілими числами.
  • \(A_i\) ​ — рядок довжини W_A ​, що складається з '.' і '#'.
  • \(B_i\) ​ — рядок довжини \(W_B\) ​, що складається з '.' і '#'.
  • \(X_i\) ​ — рядок довжини \(W_X\) ​, що складається з '.' і '#'.
  • Кожен аркуш \(A\), \(B\) і \(X\) містить принаймні один чорний квадрат.

Формат вхідних даних

Вхідні дані вводяться згідно формату:

Формат вихідних даних

У вихідний потік виведіть відповідь: Yes або No.

Приклад вхідних даних

3 5
#.#..
.....
.#...
2 2
#.
.#
5 3
...
#.#
.#.
.#.
...

Приклад вихідних даних

Yes

Спочатку вставте аркуш A на аркуш C, як показано на малюнку нижче.

Потім вставте аркуш B так, щоб його верхній лівий кут вирівнявся з кутом аркуша A, як показано на малюнку нижче.

Тепер виріжте область 5×3 з квадратом у першому рядку та другому стовпці діапазону, зображеного вище, у верхньому лівому куті, як показано на малюнку нижче.

Це включає всі чорні квадрати аркушів A і B і збігається з аркушем X, що задовольняє умови. Тому Yes.

Приклад вхідних даних

2 2
#.
.#
2 2
#.
.#
2 2
##
##

Приклад вихідних даних

No

Зверніть увагу, що аркуші A і B не можна повертати або перевертати під час їх вставлення.

Приклад вхідних даних

1 1
#
1 2
##
1 1
#

Приклад вихідних даних

No

Незалежно від того, як ви вставляєте чи вирізаєте, ви не можете вирізати аркуш, який містить усі чорні квадрати аркуша B, тому ви не можете задовольнити першу умову.

Приклад вхідних даних

3 3
###
...
...
3 3
#..
#..
#..
3 3
..#
..#
###

Приклад вихідних даних

Yes

Коментарі

Ще немає коментарів.