OPEI 2021 - Junior
A. Ciclismo
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Eduardo é um ciclista recifense assíduo e participa frequentemente de competições de ciclismo. Está para iniciar-se uma grande prova de ciclismo por etapas em Recife e ele quer registrar seu desempenho em cada etapa. Porém, como ainda está se aprimorando, ele se importa apenas em saber se consegue concluir o percurso dentro do tempo estipulado pela organização do evento. Então, para registrar o desempenho dele nas provas, considere: N o número de etapas, para CADA etapa teremos T o tempo máximo (em segundos) para a realização da etapa, S a distância (em metros) do percurso escolhido e V a velocidade média (em m/s) (escalar) de Eduardo durante esse percurso.

Input

A primeira linha consiste de um número N (1 <= N <= 100), o número de etapas. Seguidos de N linhas representando cada etapa.

Cada linha consiste de tres inteiros T, S, V (0 <= T,S,V <= 1000).

Output

Para cada etapa, imprima em uma linha separada "SIM" caso ele tenha conseguido concluir a prova no tempo previsto, e "NAO" se ele não tiver conseguido.

Example
Input
2
44 1000 23
63 950 15
Output
SIM
NAO

Statement is not available in English language
B. Festival de Presentes
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Aproximando-se do ano novo, uns grupos de amigos resolvem fazer o tradicional festival de presentes. Considerando um grupo de amigos que vão dar presentes entre si, queremos determinar quanto cada amigo ganhou (ou perdeu) considerando o valor que ele deu de presente pra seus amigos (dividindo igualmente) e o quanto ele recebeu de seus amigos. Porém, nesses grupos de amigos, algumas pessoas vão ter mais conhecidos que outras. Dado um grupo de amigos, o dinheiro que cada pessoa do grupo vai usar pra presentear e dividir igualmente entre os amigos que ela escolheu presentear, crie o programa que responde quanto cada pessoa do grupo ganhou (ou perdeu).

Este problema envolve determinar, para um grupo de amigos que se dão presentes, quanto cada pessoa dá a mais do que recebe (e vice-versa para aqueles que vêem dar presentes com cinismo). Neste problema, cada pessoa reserva algum dinheiro para dar presentes e divide esse dinheiro igualmente entre todos aqueles a quem são dados presentes. No entanto, em qualquer grupo de amigos, algumas pessoas dão mais do que outras (ou pelo menos podem ter mais conhecidos) e algumas pessoas têm mais dinheiro do que outras. Dado um grupo de amigos, o dinheiro que cada pessoa do grupo gasta em presentes e uma (sub) lista de amigos a quem cada pessoa dá presentes; você deve escrever um programa que determina quanto mais (ou menos) cada pessoa no grupo dá do que recebe.

Input

A primeira linha de entrada será a quantidade de grupos a serem examinados. Logo, teremos uma sequência de grupos de amigos do festival de presentes. Cada grupo consiste de várias linhas:

  • Uma linha contendo o número de pessoas no grupo;
  • Uma nova linha com a lista dos nomes de cada pessoa do grupo;
  • Uma nova linha para cada pessoa no grupo consistindo de: nome da pessoa, a quantidade de dinheiro que essa pessoa usará pra presentear, o número de pessoas a quem os presentes são dados e os nomes das pessoas do grupo a quem os presentes são dados.
Todos os nomes são letras minúsculas, não há mais de 10 pessoas em um grupo e nenhum nome tem mais de 12 caracteres. O dinheiro é um número inteiro, não negativo e menor que 2.000. A entrada consiste em um ou mais grupos e termina no fim do arquivo.
Output

Para cada grupo do festival de presentes, imprima, para cada pessoa do grupo, o nome da pessoa seguido pelo ganho (ou perda) recebido (ou gasto) por ela. Cada linha de pessoa deve ser impressa na mesma ordem em que aparecem pela primeira vez na entrada.

A saída de cada grupo deve ser separada de outros grupos por uma linha em branco. Todos os presentes são inteiros. Então, cada pessoa pegará o valor que ela reservou para os presentes e dividirá igualmente entre as pessoas destinadas, dando o máximo possível que não passe do valor definido. Qualquer dinheiro que sobre nessa divisão será mantido e irá fazer parte do "valor líquido" final impresso na saída dessa pessoa.

Example
Input
2
5
andre clara gabriel vitoria matheus
andre 200 3 clara gabriel vitoria
gabriel 500 1 andre
matheus 150 2 vitoria gabriel
clara 0 2 matheus vitoria
vitoria 0 0
3
liz joao andre
liz 30 1 joao
joao 55 2 liz andre
andre 0 2 joao liz
Output
andre 302
clara 66
gabriel -359
vitoria 141
matheus -150

liz -3
joao -24
andre 27

Statement is not available in English language
C. RobôCIn
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

O RobôCIn, grupo de pesquisa do Centro de Informática da UFPE que usa a robótica para resolver problemas, está desenvolvendo um novo projeto. Nesse projeto, eles criaram um robô que se locomove por um dado um tabuleiro retangular utilizando uma sequência de instruções. Porém, eles precisam de ajuda para descobrir onde o robô estará, considerando as dimensões do tabuleiro, a posição inicial do robô e o conjunto de instruções. A posição do robô consiste em um par de coordenadas x e y, que são inteiros, e uma orientação (N, S, L, O para norte, sul, leste e oeste) que indica pra qual lado o robô está virado no momento. Uma instrução para o robô é uma sequência de letras que pode ser "E", "D" e "F" que significam, respectivamente, as instruções:

  • Esquerda: o robô virará 90 graus para a esquerda e permanecerá na mesma posição do tabuleiro.
  • Direita: o robô virará 90 graus para a direita e permanecerá na mesma posição do tabuleiro.
  • Frente: o robô avança para a próxima posição do tabuleiro na direção da orientação atual dele. Por exemplo, se a orientação atual dele é N (norte), a instrução F levaria o robô da posição (x, y) para a posição (x, y + 1).
Como o tabuleiro é retangular e limitado, caso o robô se mova para uma posição além dos limites, ele irá cair no abismo dos robôs. Sabendo disso, os alunos do RobôCIn implementaram, nos robôs, um sistema de aviso. Se um robô for cair para fora da área do tabuleiro, ele automaticamente marcará a posição que o levou a esse triste final. Dessa forma, os próximos robôs irão apenas ignorar uma instrução que o leve a cair a partir da mesma posição.
Input

A primeira linha da entrada consiste nas coordenadas do canto superior direito. Assume-se que a posição (0,0) dele é o canto inferior esquerdo. A próxima linha contem a quantidade de robôs que o time do RobôCIn ira treinar, em ordem. Então, para cada robô, serão duas linhas. Na primeira a posição e orientação inicial. E, na segunda, a sequência de comandos que o robô deve ler.

Output

Para cada robô (conjunto de posição e instruções) da entrada, você deve imprimir a posição final dele no tabuleiro seguido de sua orientação final, todos separados por um espaço em branco e uma quebra de linha no final. Se um robô cair da borda do tabuleiro, deve imprimir a palavra "PERDIDO" após a posição e orientação, na mesma linha.

Example
Input
5 3
3
1 1 L
DFDFDFDF
3 2 N
FDDFEEFFDDFEE
0 3 O
EEFFFEFEFE
Output
1 1 L
3 3 N PERDIDO
2 3 S
Note

* Uma posição consiste de dois inteiros que especificam as coordenadas iniciais do robô seguida de uma orientação (N, S, L, O), todos separados por um espaço em branco na mesma linha. Uma instrução do robô é uma sequência de letras 'L', 'R' e 'F' em uma linha.

* No tabuleiro, apenas um robô pode andar de cada vez, ou seja, primeiro você precisa processar toda a sequência de um robô antes de ir para o próximo. Você pode assumir que todas as posições iniciais do robô estão dentro dos limites do tabuleiro especificado. O valor máximo para qualquer coordenada é 50. Todas as strings de instrução terão menos de 100 e pelo menos 1 caracteres de comprimento.

Statement is not available in English language
D. Desafio no centro
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Em um belo dia no centro de Recife, você se depara com um desafio proposto pela prefeitura para capturar as mentes mais brilhantes do centro. Chegando mais perto, a organização lhe explicou qual era o desafio:

Você tinha alguns segundos para informar uma sequencia de dígitos, definida pela seguinte formula:

  • f(1) = "1"
  • f(n) = como você leria a sequencia de dígitos de f(n-1), que é então convertida para uma sequencia diferente.

Para determinar como você leria a sequencia de dígitos, divida ela no mínimo de grupos possível, tal que cada grupo contenha uma parte contígua de mesmos dígitos. Então, para cada grupo, leia o numero de dígitos seguido do digito. Para converter numa string de dígitos, concatena a leitura de cada palavra.

Por exemplo, a leitura e conversão para a string de dígitos "3322251": Dois 3, três 2, um 5 e um 1 -> 2 3 + 3 2 + 1 5 + 1 1 -> "23321511"

Dado um inteiro positivo n, retorna a sequencia de dígitos de n.

Input

Uma linha contendo um número n (1 <= n <= 30)

Output

Uma linha contendo apenas os dígitos referente ao número n.

Examples
Input
1
Output
1
Input
4
Output
1211