Łamigłówka 3

면접 대비

시간 제한2초메모리 제한1024 MB

요약
목표 색 배열이 주어질 때, 색이 없는 판에서 행이나 열 전체를 칠하는 n+m 이하의 이동으로 그 배열을 만들어낸다.
난이도

보통10점 중 6점

유형
그리디, 구현, 행렬, 시뮬레이션
정답자
아직 제출이 없습니다

문제

Bajtek uwielbia grać w gry mobilne. Irytują go jednak często pojawiające się reklamy innych gier, w których osoba grająca radzi sobie bardzo źle, co ma wywołać frustrację osoby oglądającej i chęć zagrania. Jedna z takich reklam (którą być może mieliście okazję sami zobaczyć) szczególnie zapadła Bajtkowi w pamięć.

Jako że inspirację można czerpać ze wszystkiego, Bajtek postanowił na podstawie powyższej gry stworzyć zadanie. Wybierze on sobie docelową kolorową planszę o wymiarach n×m, a grę rozpocznie z planszą n×m, na której żadne pole nie ma koloru. W jednym ruchu może on wybrać rząd lub kolumnę i przemalować wszystkie pola w nim/niej wybranym przez siebie kolorem (zwróć uwagę na to, że daje mu to większą swobodę niż w grze przedstawionej na obrazkach powyżej, gdzie wiersze i kolumny miały narzucone kolory). Aby nieco sformalizować zadanie, wszystkie kolory oznaczył wielkimi literami alfabetu angielskiego. Czy pomożesz mu i napiszesz program, który dla każdej zadanej przez niego planszy poda ciąg ruchów, który poprawnie stworzy docelowy układ kolorów? Możesz założyć, że dostaniesz dane wejściowe, w których ten cel można osiągnąć w co najwyżej n + m ruchach.

입력

W pierwszym wierszu standardowego wejścia znajdują się dwie liczby całkowite n i m (1 ≤ n, m ≤ 2 000), oznaczające odpowiednio wysokość i szerokość planszy.

W każdym z kolejnych n wierszy znajduje się po m znaków, z których każdy jest wielką literą alfabetu angielskiego; j-ty znak w i-tym z tych wierszy oznacza docelowy kolor pola znajdującego się w i-tym rzędzie i j-tej kolumnie planszy.

Gwarantowanym jest, że zadany układ kolorów można osiągnąć ciągiem co najwyżej n+m ruchów opisanych w treści zadania.

출력

W pierwszym wierszu wyjścia powinna znaleźć się jedna liczba całkowita r (1 ≤ r ≤ n+m), oznaczająca liczbę ruchów, które chcesz zrobić. W każdym z następnych r wierszy powinien znaleźć się opis ruchu.

Opis jednego ruchu powinien zaczynać się od znaku ‘R’ lub ‘K’, oznaczającego, czy chcesz przemalować rząd, czy kolumnę (gdzie oczywiście ‘R’ oznacza rząd, a ‘K’ kolumnę). Dalej, po pojedynczej spacji, powinien znajdować się numer rzędu lub kolumny, którą chcesz przemalować. Rzędy numerujemy od góry do dołu liczbami od 1 do n, kolumny zaś od lewej do prawej liczbami od 1 do m. Następnie, po pojedynczej spacji, powinna znajdować się jedna wielka litera alfabetu angielskiego, oznaczająca kolor, na jaki chcesz przemalować wybrany rząd lub kolumnę.

Zwróć uwagę na to, że nie musisz minimalizować liczby ruchów – wystarczy, że wykonasz ich co najwyżej n + m.

힌트

Wyjaśnienie przykładu: Jeśli w pierwszym teście przykładowym założymy, że litera ‘P’ oznacza kolor zielony, litera ‘A’ oznacza kolor żółty, zaś litera ‘Z’ oznacza kolor niebieski, to wybrany ciąg ruchów maluje planszę w następujący sposób:

예제2

  1. 예제 1

    입력
    5 5
    AAPAA
    APPAA
    AAPAA
    AAPAA
    APPPA
    
    예상 출력
    10
    R 1 Z
    K 4 A
    K 2 P
    R 5 P
    R 4 A
    R 3 A
    R 1 A
    K 5 A
    K 3 P
    K 1 A
    
  2. 예제 2

    입력
    2 3
    AAA
    PPP
    
    예상 출력
    2
    R 2 P
    R 1 A