uCoder | 1188 | Nível: 4 | Tempo Limite: 5
Treinamento Cerebral
Adaptado por erich.rodriguesf
Competição: Interfatecs 2015
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).
Exemplo de Entrada | Exemplo de Saída |
---|---|
6 |
3 D |