QOJ.ac

QOJ

حد الوقت: 2.0 s حد الذاكرة: 256 MB مجموع النقاط: 100 تفاعلية

#18099. Gra z monetami

الإحصائيات

To zadanie jest interaktywne.

Taja potrafi łatwo wygrać w tę grę, ale jej przyjaciele nie. Teraz oferuje Ci możliwość zagrania w nią.

Wyposażenie gry składa się z planszy $n \times n$ ($5 \le n \le 40$), pionka, dwóch monet (COIN1, COIN2), dwóch kostek z kierunkami świata (DICE1, DICE2) oraz wielu bloków o rozmiarze jednej komórki.

Nazwa Liczba ścian Ściany
COIN1. Moneta ruchu 2 SLIDE, RAM
COIN2. Moneta modyfikacji 2 PLACE, REMOVE
DICE1. Pierwsza kostka z kierunkami 4 N (Północ), S (Południe), W (Zachód), E (Wschód)
DICE2. Druga kostka z kierunkami 8 N (Północ), S (Południe), W (Zachód), E (Wschód), NW (Północny zachód), NE (Północny wschód), SW (Południowy zachód), SE (Południowy wschód)

Przed rozpoczęciem gry pionek i niektóre bloki są umieszczone na planszy. Następnie gracz wykonuje ruchy. Najpierw gracz wybiera monetę i rzuca nią, aby określić akcję. Następnie wybiera jedną z kostek i rzuca nią, aby określić kierunek $dir$. Po tym następuje jedna z czterech akcji:

Akcja Opis
SLIDE Przesuń pionek przez puste komórki w kierunku $dir$, aż pionek zderzy się z blokiem lub krawędzią planszy
RAM Przesuń pionek przez puste komórki w kierunku $dir$, aż zderzy się z pierwszym blokiem. Następnie przesuń pionek i blok w tym samym kierunku, aż przesuwany blok zderzy się z innym blokiem lub krawędzią planszy
PLACE Jeśli sąsiednia komórka w kierunku $dir$ obok pionka jest pusta i znajduje się na planszy, umieść blok na tej komórce
REMOVE Jeśli sąsiednia komórka w kierunku $dir$ obok pionka zawiera blok i znajduje się na planszy, usuń blok z tej komórki

Celem jest umieszczenie pionka na komórce końcowej.

Jedno zapytanie w tym zadaniu to jeden rzut monetą i jeden rzut kostką.

Interakcja

Na początku interaktor podaje rozmiar labiryntu, labirynt oraz współrzędne komórki końcowej. Następnie wykonywane są następujące 4-etapowe akcje:

  1. Program jury wyświetla współrzędne pionka lub informuje, że pionek dotarł do komórki końcowej.
  2. Twój program wyświetla nazwę monety.
  3. Program jury wyświetla nazwę akcji wylosowanej na monecie.
  4. Twój program wyświetla nazwę kostki.
  5. Program jury wyświetla nazwę kierunku wylosowanego na kostce oraz dodatkowe informacje dla akcji "RAM".

Wyjście

Standardowe wyjście powinno składać się z pary linii: nazwa monety i nazwa kostki. Nazwa monety to ciąg znaków "COIN1" lub "COIN2". Nazwa kostki to ciąg znaków "DICE1" lub "DICE2".

Nie zapomnij opróżnić bufora standardowego wyjścia po wypisaniu każdej linii.

Wejście

Pierwsza linia standardowego wejścia zawiera jedną liczbę całkowitą $n$ — rozmiar labiryntu. Następne $n$ linii zawiera $n$ znaków "." (ASCII 46) lub "#" (ASCII 35), oznaczających odpowiednio pustą komórkę i komórkę z blokiem.

Następna linia zawiera dwie liczby całkowite $r_f$ i $c_f$ — numer wiersza i numer kolumny komórki końcowej. Lewy górny róg to $(1, 1)$, prawy dolny to $(n, n)$. Komórka końcowa i początkowa są puste.

Kolejne grupy opisują każdy ruch:

  • Pierwsza linia grupy zawiera dwie liczby całkowite $r, c$ — numer wiersza i numer kolumny pionka, lub $(-1, -1)$, jeśli pionek dotarł do komórki końcowej.
  • Następna linia zawiera nazwę akcji pokazaną na monecie.
  • Następna linia zawiera nazwę kierunku pokazaną na kostce.
  • Jeśli bieżącą akcją jest "RAM", kolejne dwa ciągi znaków zawierają dwie liczby całkowite $r_1, c_1$ oraz $r_2, c_2$, oznaczające, że pionek zderza się z blokiem o współrzędnych $(r_1, c_1)$ i przesuwa ten blok do komórki $(r_2, c_2)$.

Kierunek północny odpowiada malejącemu numerowi wiersza. Południowy — rosnącemu numerowi wiersza. Kierunek zachodni odpowiada malejącemu numerowi kolumny. Wschodni — rosnącemu numerowi kolumny.

Każda strona monety lub kostki wypada z takim samym prawdopodobieństwem.

Przykład

Wejście 1

5
#....
.....
.....
.....
..#..
4 3
1 5
PLACE
W
1 5
RAM
S
6 5
6 5
5 5
RAM
W
5 3
5 1
5 2
PLACE
NE
5 2
RAM
NE
4 3
2 5
3 4
REMOVE
NE
3 4
PLACE
S
3 4
SLIDE
W
3 1
RAM
S
5 1
5 1
4 1
SLIDE
E
-1 -1

Wyjście 1

COIN2
DICE1
COIN1
DICE1
COIN1
DICE1
COIN2
DICE2
COIN1
DICE2
COIN2
DICE2
COIN2
DICE1
COIN1
DICE1
COIN1
DICE1
COIN1
DICE1

Stan początkowy labiryntu dla przykładu:

Reprezentacja ścieżki jest pokazana poniżej:

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.