QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#18676. Sadzenie drzew

Statistics

Seung-yeon chce zasadzić drzewa. W tym celu wybierze kilka pól na nieskończonej siatce i zasadzi nasiona drzew. Nasiona drzew mają tajemniczą moc – pod wpływem sąsiednich nasion wyrosną jako jabłonie lub brzoskwinie.

To, jakie drzewo wyrośnie z nasiona, podlega następującym regułom. Jeśli dwa nasiona znajdują się na polach stykających się bokiem, to nazywamy je sąsiadującymi. Nasiono, które ma parzystą liczbę sąsiadujących nasion, staje się jabłonią. Natomiast nasiono z nieparzystą liczbą sąsiadujących nasion staje się brzoskwinią.

Załóżmy, że Seung-yeon zasadził $5$ nasion jak powyżej. Nasiona, które są sąsiadujące, są oznaczone niebieskimi strzałkami. Środkowe nasiono jest sąsiadujące z $3$ nasionami, więc staje się brzoskwinią.

W rezultacie otrzymujemy $3$ jabłonie i $2$ brzoskwinie, jak pokazano powyżej.

Podczas sadzenia nasiona muszą być ze sobą połączone na siatce. Oznacza to, że dla dowolnych dwóch nasion istnieje ścieżka przechodząca tylko przez sąsiadujące nasiona. Na przykład poniższy układ jest niemożliwy.

Seung-hyeon chce zasadzić $A$ jabłoni i $B$ brzoskwiń. Należy określić, czy jest to możliwe, a jeśli tak, wypisać rozmieszczenie drzew.

Wejście

W pierwszym wierszu podano nieujemne liczby całkowite $A$ i $B$ oddzielone spacją. ($A \geq 0$; $B \geq 0$; $1 \le A+B \le 200$)

Wyjście

W pierwszym wierszu wypisz YES, jeśli rozmieszczenie jest możliwe, w przeciwnym razie NO.

Jeśli możliwe, w drugim wierszu wypisz liczby wierszy $R$ i kolumn $C$ oddzielone spacją. ($1 \le R,C \le 200$)

Następnie w $R$ wierszach wypisz po $C$ znaków bez spacji. Każdy znak to O (nasiono) lub . (puste pole).

Przykład

Wejście 1

3 2

Wyjście 1

YES
3 3
.OO
OOO
...

Wejście 2

1 0

Wyjście 2

YES
1 1
O

Wejście 3

7 0

Wyjście 3

YES
3 3
.OO
OOO
OO.

Wejście 4

8 0

Wyjście 4

YES
4 4
....
.OOO
.O.O
.OOO

Wejście 5

9 0

Wyjście 5

NO

Wejście 6

0 7

Wyjście 6

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.