acm

International Collegiate Programming Contest

2006

event sponsor

Maratona de Programa¸˜o da SBC 2006 ca
Sub-Regional Brasil do ACM ICPC
9 de Setembro de 2006

Sess˜o de Aquecimento a

(Este caderno cont´m 2 problemas; as p´ginas est˜o numeradas de 1 a 2, n˜o contando esta e a a a p´gina de rosto) a

Sedes Regionais
Regi˜o Centro-Oeste a • Universidade de Bras´ ılia, Bras´ ılia, DF • UNAES, Campo Grande, MS • Universidade Estadual do Mato Grosso do Sul, Dourados, MS Regi˜o Nordeste a • Unifor, Fortaleza, CE • Universidade Federal do Rio Grande do Norte, Natal, RN • AESO, Olinda, PE • Unime, Salvador, BA • Universidade Federal do Maranh˜o, S˜o Lu´ MA a a ıs, Regi˜o Sul a • Unioeste, Cascavel, PR • URI, Erechim, RS • Unisul, Florian´polis, SC o • Universidade Federal do Rio Grande do Sul, Porto Alegre, RG • FURG, Rio Grande, RS Regi˜o Sudeste a • Universidade Federal de Minas Gerais, Belo Horizonte, MG • Metrocamp, Campinas, SP • Faculdades M´dulo, Caraguatatuba, SP o • Universo, Juiz de Fora, MG • PUC Po¸os de Caldas, Po¸os de Caldas, MG c c • Universidade Federal do Rio de Janeiro, Rio de Janeiro, RJ • Uninove, S˜o Paulo, SP a • Unitau, Taubat´, SP e • Unitri, Ubertlˆndia, MG a • Centro Universit´rio de Vila Velha, Vila Velha, ES a Regi˜o Norte a • Centro Universit´rio do Par´, Bel´m, PA a a e • Faculdade SEAMA, Macap´, AP a • Universidade Federal de Tocantins, Palmas, TO

Promo¸˜o: Sociedade Brasileira de Computa¸˜o ca ca Patroc´ ınio: Funda¸˜o Carlos Chagas – IBM – Ci&T – Microsoft – UOL ca

Maratona de Programa¸˜o da SBC – ACM ICPC –2006 ca

1

Problema A
Fechem as portas!
Nome do arquivo fonte: portas.c, portas.cpp, portas.java ou portas.pas Madame Beauvoir possui uma mans˜o onde ela recebe todos os seus descendentes (netos e a bisnetos) durante as f´rias. Sua mans˜o possui exatamente N quartos (cada quarto ´ numerado e a e de 1 a N ), onde N ´ tamb´m a quantidade de netos e bisnetos (cada descendente ´ tamb´m e e e e numerado de 1 a N ). Como toda crian¸a, os descendentes de Mme. Beauvoir s˜o bastante travessos. Todo dia ´ c a e a mesma confus˜o: eles acordam de manh˜ cedo antes dela e se encontram no grande jardim. a a Cada descendente, um de cada vez, entra na mans˜o e troca o estado das portas dos quartos a cujos n´meros s˜o m´ltiplos do seu identificador. Trocar o estado de uma porta significa fechar u a u uma porta que estava aberta ou abrir uma porta que estava fechada. Por exemplo, o descendente cujo identificador ´ igual a 15 vai trocar o estado das portas 15, 30, 45, etc. e Considerando que todas as portas est˜o inicialmente fechadas (todos os descendentes fecham a as portas antes de descer para o jardim) e que cada descendente entra exatamente uma vez na mans˜o (a confus˜o ´ t˜o grande que n˜o sabemos em que ordem), quais portas estar˜o abertas a a e a a a ap´s a entrada de todos os descendentes na mans˜o? o a

Entrada
A entrada cont´m v´rios casos de teste. Cada caso de teste consiste em uma linha que cont´m e a e um inteiro N (0 ≤ N ≤ 25000000), indicando o n´mero de portas e descendentes. O final da u entrada ´ indicado por N = 0. e A entrada deve ser lida da entrada padr˜o. a

Sa´ ıda
Para cada caso de teste da entrada seu programa deve produzir uma linha na sa´ ıda, contendo a seq¨ˆncia crescente de n´meros correspondente aos identificadores dos quartos cujas portas ue u estar˜o abertas. Ao imprimir a seq¨ˆncia, deixe um espa¸o em branco entre dois elementos a ue c consecutivos. A sa´da deve ser escrita na sa´da padr˜o. ı ı a Exemplo de entrada 1 2 3 4 0 Sa´ para o exemplo de entrada ıda 1 1 1 1 4

Maratona de Programa¸˜o da SBC – ACM ICPC –2006 ca

2

Problema B
Esquerda, Volver!
Nome do arquivo fonte: esquerda.c, esquerda.cpp, esquerda.java ou esquerda.pas Este ano o sargento est´ tendo mais trabalho do que de costume para treinar os recrutas. Um a deles ´ muito atrapalhado, e de vez em quando faz tudo errado – por exemplo, ao inv´s de virar e e ` direita quando comandado, vira ` esquerda, causando grande confus˜o no batalh˜o. a a a a O sargento tem fama de dur˜o e n˜o vai deixar o recruta em paz enquanto este n˜o aprender a a a a executar corretamente os comandos. No s´bado ` tarde, enquanto todos os outros recrutas a a est˜o de folga, ele obrigou o recruta a fazer um treinamento extra. Com o recruta marchando a parado no mesmo lugar, o sargento emitiu uma s´rie de comandos “esquerda volver!” e “direita e volver!”. A cada comando, o recruta deve girar sobre o mesmo ponto e dar um quarto de volta na dire¸˜o correspondente ao comando. Por exemplo, se o recruta est´ inicialmente com o rosto ca a voltado para a dire¸ao norte, ap´s um comando de “esquerda volver!” ele deve ficar com o rosto c˜ o voltado para a dire¸˜o oeste. Se o recruta est´ inicialmente com o rosto voltado para o leste, ca a ap´s um comando “direita, volver!” ele deve ter o rosto voltado para o sul. o No entanto, durante o treinamento, em que o recruta tinha inicialmente o rosto voltado para o norte, o sargento emitiu uma s´rie t˜o extensa de comandos, e t˜o rapidamente, que at´ e a a e ele ficou confuso, e n˜o sabe mais para qual dire¸˜o o recruta deve ter seu rosto voltado ap´s a ca o executar todos os comandos. Vocˆ pode ajudar o sargento? e

Entrada
A entrada cont´m v´rios casos de teste. A primeira linha de um caso de teste cont´m um inteiro e a e N que indica o n´mero de comandos emitidos pelo sargento (1 ≤ N ≤ 1000). A segunda linha u cont´m N caracteres, descrevendo a s´rie de comandos emitidos pelo sargento. Cada comando e e ´ representado por uma letra: ‘E’ (para “esquerda, volver!”) e ‘D’ (para “direita, volver!”). O e final da entrada ´ indicado por N = 0. e A entrada deve ser lida da entrada padr˜o. a

Sa´ ıda
Para cada caso de teste da entrada seu programa deve produzir uma unica linha da sa´ ´ ıda, indicando a dire¸˜o para a qual o recruta deve ter sua face voltada ap´s executar a s´rie de ca o e comandos, considerando que no in´ o recruta tem a face voltada para o norte. A linha deve ıcio conter uma letra entre ‘N’, ‘L’, ‘S’ e ‘O’, representando respectivamente as dire¸˜es norte, leste, co sul e oeste. A sa´da deve ser escrita na sa´da padr˜o. ı ı a Exemplo de entrada 3 DDE 2 EE 0 Sa´ para o exemplo de entrada ıda L S