[BOJ 8606] Klasy

View as PDF

Submit solution

Points: 3
Time limit: 1.0s
Memory limit: 512M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

W Bajtocji dzieci grają w ciekawą odmianę gry w klasy. Na chodniku jest namalowany kwadrat o boku $n$, podzielony na $n^2$ jednakowych pól. Zadaniem jednego z dzieci, zwanego dalej zawodnikiem, jest ponumerowanie wszystkich pól w ściśle określony sposób. Przed grą zawodnikowi wyznaczany jest kierunek świata: północ, południe, zachód lub wschód oraz dozwolony rodzaj skrętu: prawo lub lewo.</p>

Wyznaczone dziecko wchodzi na wybrane przez siebie pole - jedno z czterech pól przy wierzchołkach kwadratu, zwraca się w wyznaczonym kierunku świata i rozpoczyna numerowanie od postawienia liczby $1$ na polu startowym. W każdym ruchu zawodnik:

  • idzie naprzód o jedno pole, o ile w wyniku tego ruchu pozostanie nadal wewnątrz kwadratu, a pole, na które przejdzie, jest wolne, tj. jeszcze nieponumerowane;
  • w przeciwnym przypadku wykonuje skręt w dozwolonym kierunku, ale tylko jeden, i idzie naprzód o jedno pole.

Każde kolejne odwiedzone pole zawodnik numeruje kolejną liczbą naturalną. Dodatkowo zakładamy, że w pierwszym ruchu zawodnik nie może wykonać skrętu, a jedynie pójść naprzód w wyznaczonym kierunku. Pole startowe musi więc zostać wybrane z rozwagą. Jeżeli na przykład kwadrat ma bok długości $5$, zadany został kierunek północ i skręt w prawo, to doświadczony zawodnik wybrałby jako pole startowe róg południowo-zachodni, a cały ponumerowany kwadrat wyglądałby tak:

Twoim zadaniem jest napisanie programu, który wypisze zawartość pewnego zadanego wycinka kwadratu wypełnionego przez dzieci.

입력 형식

W pierwszym wierszu standardowego wejścia znajdują się pooddzielane pojedynczymi odstępami: liczba całkowita $n$ ($2 ≤ n ≤ 5\,000$), oznaczająca długość boku kwadratu, oraz dwa wyrazy oznaczające kierunek świata (jedno ze słów: POLNOCPOLUDNIEZACHOD lub WSCHOD) i dozwolony skręt (jedno ze słów: PRAWO lub LEWO).</p>

W drugim wierszu wejścia znajdują się cztery liczby całkowite $x_1$, $x_2$, $y_1$, $y_2$ ($1 ≤ x_1 ≤ x_2 ≤ n$, $1 ≤ y_1 ≤ y_2 ≤ n$, $(x_2-x_1) \cdot (y_2 - y_1) ≤ 1\,000\,000$) oznaczające odpowiednio pierwszą i ostatnią kolumnę oraz pierwszy i ostatni wiersz wycinka, który należy wypisać. Kolumny są ponumerowane od $1$ do $n$ z zachodu na wschód, zaś wiersze - od $1$ do $n$ z południa na północ.

출력 형식

Twój program powinien wypisać na standardowe wyjście dokładnie $y_2 - y_1 + 1$ wierszy, a w każdym z nich po $x_2 - x_1 + 1$ liczb pooddzielanych pojedynczymi odstępami. Mają one przedstawiać kolejne wiersze wycinka ponumerowanego kwadratu, podane w kolejności od najbardziej wysuniętego na północ do położonego najbardziej na południu.

예제 입력

5 POLNOC PRAWO
2 4 2 3

예제 출력

18 25 22
17 24 23

Comments

There are no comments at the moment.