Treinamento Cerebral

1188
Tempo Limite: 5 | Nível: 4

Descrição

Nos últimos anos, diversos jogos para treinamento cerebral têm sido desenvolvidos e disponibilizados em diferentes plataformas. Estes jogos geralmente lidam com retenção de informações, visão periférica, atenção dividida, entre outras habilidades.

Um destes jogos, relacionado à retenção de informações, envolve o jogador se lembrar das posições de barras diretas (/) e invertidas (\) inseridas em um tabuleiro com N x N casas. A figura seguinte apresenta uma possível configuração do tabuleiro deste jogo, com 6 x 6 casas e algumas barras.

Os pontos nas laterais do tabuleiro indicam locais de onde bolas podem ser lançadas. Quando uma bola é lançada, ela segue em linha reta até encontrar uma barra. Neste caso, ela rebate na barra, conforme ilustrado nas figuras seguintes, e muda de direção.

Após apresentar as barras no tabuleiro por um curto intervalo de tempo para o jogador (geralmente 1 segundo), estas desaparecem e o jogo informa um ponto de onde uma bola será lançada. O jogador deve então especificar onde a bola irá parar: em qual linha ou coluna, e borda, ela sairá do tabuleiro.

Nas figuras seguintes, são apresentados dois exemplos de caminhos que a bola seguirá caso ela seja lançada do ponto escuro (preenchido). No primeiro caso (esquerda), a bola é lançada da 6ª linha, borda direita, rebatendo em apenas uma barra e saindo do tabuleiro na 6ª coluna, borda superior. No segundo caso (direita), a bola é lançada da 6ª coluna, borda inferior, rebatendo em sete barras e saindo do tabuleiro na 3ª linha, borda direita.

Você foi convidado para codificar esse jogo em Android. Para tanto, deve implementar uma funcionalidade que, dado um tabuleiro, suas barras e uma posição de lançamento da bola, determina em qual linha ou coluna, e borda, a bola irá sair do tabuleiro.


Entrada

A entrada contém vários casos de teste. A primeira linha de cada caso de teste contém um inteiro N (4 ≤ N ≤ 50), indicando o número N de linhas e colunas do tabuleiro. A próxima linha contém um inteiro M (0 ≤ M ≤ N*N), indicando o número de barras que serão informadas. As próximas M linhas contêm dois inteiros L e C (1 ≤ L e C ≤ N) e um caractere B (B=’D’ ou B=’I’), separados por um espaço simples, representando respectivamente a linha e coluna do tabuleiro onde se encontra uma barra e o tipo da barra (‘D’ indica uma barra direta e ‘I’ uma barra invertida). A última linha do caso de teste contém um inteiro O (1 ≤ O ≤ N), e um caractere X (X=’E’ ou X=’D’ ou X=’S’ ou X=’I’), indicando respectivamente o número da linha ou coluna de onde uma bola será lançada e a borda da qual ela será lançada (‘E’: borda  esquerda; ‘D’: borda direita; ‘S’: borda superior; ou ‘I’: borda inferior).


Saída

Para cada caso de teste, imprima um inteiro S (1 ≤ S ≤ N), e um caractere Y (Y=’E’ ou Y=’D’ ou Y=’S’ ou Y=’I’), indicando respectivamente o número da linha ou coluna e a borda onde a bola deixará o tabuleiro (‘E’: borda esquerda; ‘D’: borda direita; ‘S’: borda superior; ou ‘I’: borda inferior).


Exemplos de Entrada Exemplos de Saída

6
7
2 1 D
2 4 I
3 4 I
4 1 I
4 3 I
6 3 I
6 6 I
6 I

3 D

Efetue Login ou Cadastre-se para submeter uma solução.



Criado por Leandro Luque (Fatec Mogi das Cruzes) | Adaptado por erich.rodriguesf | Competição: Interfatecs 2015