Professional Documents
Culture Documents
Spojbr Obi
Spojbr Obi
obi problemset
Editors:
Wanderley Guimares
Last updated: 2012-12-14 09:16:56
Preface
This electronic material contains a set of algorithmic problems, forming the archives of the SPOJ Brasil (http://www.spoj.com/SPOJBR/), obi problemset. The document can be accessed at the following URLs: in PostScript format: http://www.spoj.com/SPOJBR/problems/obi.ps in Portable Document Format: http://www.spoj.com/SPOJBR/problems/obi.pdf These resources are constantly updated to synchronise with the ever-changing hypertext version of the problems, and to include newly added problems. If you have obtained this document from another source, it is strongly recommended that you should download the current version from one of the aforementioned URLs. Enjoy problem-solving at the SPOJ Brasil!
Disclaimer from the Editors. Despite our best efforts, it is possible that this document contains errors or that some of the content differs slightly from its original hypertext form. We take no responsibility for any such faults and their consequences. We neither authorise nor approve use of this material for any purpose other than facilitating problem solving at the Sphere Online Judge site; nor do we guarantee its fitness for any purpose whatsoever. The layout of the problems in this document is the copyright of the Editors named on the cover (as determined by the appropriate footers in the problem description). The content is the copyright of the respective Editor unless the copyright holder is otherwise stated in the resource section. The document as a whole is not protected by copyright, and fragments of it are to be regarded independently. No responsibility is taken by the Editors if use or redistribution of this document violates either their or third party copyright laws. When referring to or citing the whole or a fragment of this document, please state clearly the aforementioned URLs at which the document is to be found, as well as the resources from which the problems you are referring to originally came. Remarks concerning this document should be sent to the following e-mail address: contact@spoj.com.
Table of Contents
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Problem REDOTICA (810. Rede tica) Problem QUERM (811. Quermesse) Problem BIT (812. Bits Trocados) Problem SALDO (813. Saldo de gols) Problem MACACO (814. Macaco-prego) Problem LUA (815. Temperatura Lunar) Problem TESOURO (816. Caa ao Tesouro) Problem DOBRA (817. Dobradura) Problem AERO (818. Aeroporto) Problem PEDAGIO (819. Pedgio) Problem COFRE (840. Cofrinhos da V Vitria) Problem ESTAGIO (841. Estgio) Problem OBIHANOI (842. Torres de Hani) Problem SUPERMER (843. Supermercado) Problem NUMERDOS (844. Nmero de Erdos) Problem OBITETRI (845. Tetris) Problem METEORO (1330. Meteoros) Problem OBIDOMIN (1331. Domin) Problem DENGUE (1332. Dengue) Problem SORVETE (1333. Sorvete) Problem CALCULA (1334. Calculando) Problem PAR (1363. Par ou mpar) Problem FUROS (1364. Cubra os furos) Problem PAL (1365. Palndrome) Problem TV (1366. TV da Vov) Problem SENHA (1367. Proteja sua senha) Problem ORKUT (1368. Orkut) Problem BAFO (1386. Bafo) Problem ENERGIA (1387. Transmissao de Energia) Problem VIVO (1388. Vivo ou Morto) Problem DESCULPA (1389. Pedido de Desculpas) Problem OBIPOKER (1390. Mini-Poker) Problem FROTATAX (2606. Frota de Txi) Problem MINHOCA (2607. Campo de Minhocas) Problem DUENDE (2608. Duende Perdido) Problem TRILHAS (2609. Trilhas) Problem ELEICOES (3773. Eleioes) Problem FATORIA2 (3774. Fatorial) Problem FLIPERAM (3775. Fliperama) Problem GENEAL (3776. rvore Genealgica) Problem MIOJO (3826. Miojo) Problem PARPROX (3827. Pontos) Problem PRIMO (3828. Primo) Problem QUADRAD2 (3829. Quadrados) Problem SOMA (3830. Soma)
46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92.
Problem JSEDEX (8696. Sedex) Problem JPNEU (8697. Pneu) Problem JGARCOM (8698. Garom) Problem JDENTIST (8699. Dentista) Problem JESCADA (8700. Escada) Problem JTACOGRA (8701. Tacgrafo) Problem CONTA1 (8703. Conta de gua) Problem COPA1 (8704. Copa do mundo) Problem PEDAGIO1 (8705. Pedgio) Problem TIMES1 (8706. Times) Problem CHAMADA1 (8707. Chamada) Problem DANCA1 (8708. Dana) Problem FUSOES1 (8709. Fusoes) Problem MARCIAN1 (8710. Marciano) Problem BATALHA2 (8776. Batalha naval) Problem COMETA2 (8777. Cometa) Problem ELEVADO2 (8778. Elevador) Problem REUNIAO2 (8779. Reuniao) Problem ALTAS2 (8780. Altas aventuras) Problem FLOREST2 (8781. Floresta) Problem MATRIZ2 (8782. Matrizes) Problem TELESCO2 (8783. Telescpio) Problem TRADUTO2 (8784. Tradutor aliengena) Problem MINADO12 (10864. Campo minado) Problem CORRID11 (10865. Corrida) Problem TRANSP11 (10866. Transporte) Problem CALCUL11 (10867. Calculadora) Problem CHUVA11 (10868. Chuva) Problem GINCAN11 (10869. Gincana) Problem CORR11 (11001. Corrida) Problem PAS11 (11002. Progressoes aritmticas) Problem PUSAPO11 (11003. Pulo do sapo) Problem TRIANG11 (11004. Tringulos) Problem CALCU11 (11005. Calculadora) Problem COLOR11 (11006. Colorindo) Problem BALE11 (11007. Bal) Problem SELOS11 (11008. Selos) Problem PESCA11 (11009. O mar nao est para peixe) Problem TESOUR11 (11010. Caa ao tesouro) Problem CARTOG11 (11011. Desafio cartogrfico) Problem QUADRA11 (11012. Quadrado aritmtico) Problem MAGICO11 (11013. Quadrado mgico) Problem EXPRES11 (11014. Expressoes) Problem ESCALO11 (11015. Escalonamento timo) Problem RMAPA11 (11016. Reduzindo detalhes em um mapa) Problem VIRA11 (11017. Vira!) Problem BACT09 (11628. Bactrias)
93. Problem CHOCPJ09 (11629. Competio de chocolate) 94. Problem CHOC09 (11630. Competio de chocolate) 95. Problem ENVEL09 (11631. Nmero de Envelopes) 96. Problem FUGIT09 (11636. O fugitivo) 97. Problem MARAT09 (11638. Maratona) 98. Problem MITO09 (11641. Caadores de Mitos) 99. Problem NOTA09 (11645. Notas da prova) 100. Problem OLIMP09 (11646. Olimpadas) 101. Problem OVERF09 (11647. Overflow) 102. Problem PAPEL09 (11648. Avioes de papel) 103. Problem PONTES09 (11649. Caminho das pontes) 104. Problem SIMUL09 (11650. Simulador) 105. Problem BANDA09 (11651. Banda) 106. Problem CADEIR09 (11654. Cadeiras do auditrio) 107. Problem OLIMPJ09 (11675. Olimpadas) 108. Problem LAB07 (12928. Labirinto) 109. Problem PIZZA07 (12930. Pizza) 110. Problem PENAL06 (12937. Penalidade mnima) 111. Problem PAO07 (12939. Po a metro) 112. Problem AUTO08 (12993. Auto Estrada) 113. Problem VIAESP08 (12994. Viagem Espacial) 114. Problem CAVALO08 (12995. Cavalos) 115. Problem CHUVA08 (12997. Chuva) 116. Problem ORTOG08 (12998. Ortografia) 117. Problem FRETE08 (12999. Frete da Famlia Silva)
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Tarefa
Vamos denominar uma ligaao de fibra tica entre duas tabas de um ramo de rede. Para possibilitar a comunicaao entre todas as tabas necessrio que todas elas estejam interligadas, direta (utilizando um ramo de rede) ou indiretamente (utilizando mais de um ramo). Os caciques conseguiram a informaao do impacto ambiental que causar a construao dos ramos. Alguns ramos, no entanto, nem foram considerados no estudo ambiental, pois sua construao impossvel.
Sua tarefa escrever um programa para determinar quais ramos devem ser construdos, de forma a possibilitar a comunicaao entre todas as tabas, causando o menor impacto ambiental possvel.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de teste contm dois nmeros inteiros positivos N e M que indicam, respectivamente, o nmero de tabas e o nmero de ramos de redes possveis. As tabas sao numeradas de 1 a N. As M linhas seguintes contem tres inteiros positivos X, Y e Z, que indicam que o ramo de rede que liga a taba X a taba Y tem impacto ambiental
Z. Com os conjuntos de teste dados sempre possvel interligar todas as tabas. O final da entrada indicado quando N = 0.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir uma lista dos ramos de redes que devem ser construdos. A lista deve ser precedida de uma linha que identifica o conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A lista composta por uma sequencia de ramos a serem construdos, um ramo por linha. Um ramo descrito por um par de tabas X e Y , com X < Y. Os ramos de rede podem ser listados em qualquer ordem, mas nao deve haver repetiao. Se houver mais de uma soluao possvel, imprima apenas uma delas. O final de uma lista de ramos deve ser marcado com uma linha em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 3 3 1 2 10 2 3 10 3 1 10 5 6 1 2 15 1 3 12 2 4 13 2 5 5 3 2 6 3 4 6 0 0 Sada: Teste 1 1 2 1 3 Teste 2 1 3 2 3 2 5 3 4
Restrioes
0 1 1 1 1 <= <= <= <= <= N M X Y Z <= <= <= <= <= 100 (N = 0 apenas para indicar o fim da entrada) N(N-1)/2 100 100 100
Pyramid (Intel Pentium III 733 MHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: Olimpiada Brasileira de Informatica 2000
811. Quermesse
Problem code: QUERM
Os alunos do ltimo ano resolveram organizar uma quermesse para arrecadar fundos para a festa de formatura. A festa prometia ser um sucesso, pois o pai de um dos formandos, Tefilo, dono de uma loja de informtica, decidiu doar um computador para ser sorteado entre os que comparecessem. Os alunos prepararam barracas de quentao, pipoca, doces, ensaiaram a quadrilha e colocaram a venda ingressos numerados sequencialmente a partir de 1. O nmero do ingresso serviria para o sorteio do computador. Ficou acertado que Tefilo decidiria o mtodo de sorteio; em princpio o sorteio seria, claro, computadorizado. O local escolhido para a festa foi o ginsio da escola. A entrada dos participantes foi pela porta principal, que possui uma roleta, onde passa uma pessoa por vez. Na entrada, um funcionrio inseriu, em uma lista no computador da escola, o nmero do ingresso, na ordem de chegada dos participantes. Depois da entrada de todos os participantes, Tefilo comeou a trabalhar no computador para preparar o sorteio. Verificando a lista de presentes, notou uma caracterstica notvel: havia apenas um caso, em toda a lista, em que o participante que possuia o ingresso numerado com i, havia sido a i-sima pessoa a entrar no ginsio. Tefilo ficou tao encantado com a coincidencia que decidiu que o sorteio nao seria necessrio: esta pessoa seria o ganhador do computador.
Tarefa
Conhecendo a lista de participantes, por ordem de chegada, sua tarefa determinar o nmero do ingresso premiado, sabendo que o ganhador o nico participante que tem o nmero do ingresso igual a sua posiao de entrada na festa.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de teste contm um nmero inteiro positivo N que indica o nmero de participantes da festa. A linha seguinte contm a sequencia, em ordem de entrada, dos N ingressos das pessoas que participaram da festa. O final da entrada indicado quando N = 0. Para cada conjunto de teste da entrada haver um nico ganhador.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas. A primeira linha identifica o conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter o nmero do ingresso do ganhador, conforme determinado pelo seu programa. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 4 4 5 3 1 10 9 8 7 6 1 4 3 2 12 10 0 Sada: Teste 1 3 Teste 2 10
Restrioes
0 <= N <= 10000 (N = 0 apenas para indicar o fim da entrada) Added by: Wanderley Guimaraes Date: 2006-04-19 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2000
Tarefa
Os caixas eletrnicos das Ilhas Weblands operam com todos os tipos de notas disponveis, mantendo um estoque de cdulas para cada valor (B$ 50,00, B$10,00, B$5,00 e B$1,00). Os clientes do banco utilizam os caixas eletrnicos para efetuar retiradas de um certo nmero inteiro de Bits. Sua tarefa escrever um programa que, dado o valor de Bits desejado pelo cliente, determine o nmero de cada uma das notas necessrio para totalizar esse valor, de modo a minimizar a quantidade de cdulas entregues. Por exemplo, se o cliente deseja retirar B$50,00, basta entregar uma nica nota de cinquenta Bits. Se o cliente deseja retirar B$72,00, necessrio entregar uma nota de B$50,00, duas de B$10,00 e duas de B$1,00.
Entrada
A entrada composta de vrios conjuntos de teste. Cada conjunto de teste composto por uma nica linha, que contm um nmero inteiro positivo V, que indica o valor solicitado pelo cliente. O final da entrada indicado por V = 0.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. Na segunda linha devem aparecer quatro inteiros I, J, K e L que representam o resultado encontrado pelo seu programa: I indica o nmero de cdulas de B$50,00, J indica o nmero de cdulas de B$10,00, K indica o nmero de cdulas de B$5,00 e L indica o nmero de cdulas de B$1,00. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 1 72 0 Sada: Teste 1
0 0 0 1 Teste 2 1 2 0 2
Restrioes
0 <= V <= 10000 (V = 0 apenas para indicar o fim da entrada) Added by: Wanderley Guimaraes Date: 2006-04-19 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2000
Tarefa
dada uma lista, numerada seqencialmente a partir de 1, com os resultados de todos os jogos do time (primeira partida: 3 x 0, segunda partida: 1 x 2, terceira partida: 0 x 5 ...). Sua tarefa escrever um programa que determine em qual perodo o time conseguiu acumular o maior saldo de gols. Um perodo definido pelos nmeros de seqencia de duas partidas, A e B, onde A <= B. O saldo de gols acumulado entre A e B dado pela soma dos gols marcados pelo time em todas as partidas realizadas entre A e B (incluindo as mesmas) menos a soma dos gols marcados pelos times adversrios no perodo. Se houver mais de um perodo com o mesmo saldo de gols, escolha o maior perodo (ou seja, o perodo em que B - A maior). Se ainda assim houver mais de uma soluao possvel, escolha qualquer uma delas como resposta.
Entrada
Seu programa deve ler vrios conjuntos de teste. A primeira linha de um conjunto de teste contm um inteiro nao negativo, N, que indica o nmero de partidas realizadas pelo time (o valor N = 0 indica o final da entrada). Seguem-se N linhas, cada uma contendo um par de nmeros inteiros nao negativos X e Y que representam o resultado da partida: X sao os gols a favor e Y os gols contra o time de Hiplito. As partidas sao numeradas sequencialmente a partir de 1, na ordem em que aparecem na entrada.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter um par de inteiros I e J que indicam respectivamente a primeira e ltima partidas do melhor perodo, conforme determinado pelo seu programa, exceto quando o saldo de gols do melhor perodo for menor ou igual a zero; neste caso a segunda linha deve conter a expressao "nenhum". A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 2 2 3 7 1 9 2 2 0 5 6 2 1 4 0 0 5 1 1 5 6 2 0 5 3 0 2 0 3 0 4 0 Sada: Teste 1 2 2 Teste 2 3 8 Teste 3 nenhum
Restrioes
0 <= N <= 10000 (N = 0 apenas para indicar o fim da entrada) > 1 <= A <= N <code> > A <= B <= N<code> > 0 <= X <= 50<code> > 0 <= Y <= 50<code> > Added by:<td>Wanderley Guimaraes Date: 2006-04-19 Time limit: 1s Source limit: 50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2000
814. Macaco-prego
Problem code: MACACO
O macaco-prego um animal irrequieto e barulhento, merecedor tambm dos adjetivos desordeiro e despudorado. A sua cabea, encimada por uma densa pelagem negra ou marrom-escura, semelhante a um gorro, torna seu aspecto inconfundvel. Apesar de ser o macaco mais comum nas matas do pas, uma de suas sub-espcies encontra-se seriamente ameaada de extinao: o macacopregodo-peito-amarelo, que se distingue das demais pela coloraao amarelada do peito e da parte anterior dos braos. Um grande esforo foi feito pelos primatologistas para aumentar a populaao dos macacos-pregodopeito-amarelo. Sabe-se que eles se alimentam de plantas, das quais consomem preferencialmente frutos e brotos. Alimentam-se tambm de muitos animais, preferencialmente lesmas, lagartas e ras, e preferem as florestas mais densas. Para determinar o melhor local do pas para criar uma nova reserva ambiental para os macacos-prego-do-peito-amarelo, o governo fez um levantamento das regioes no pas onde as condioes preferidas desses animais ocorrem: regioes de floresta densa, regioes com frutos, regioes com muitos brotos, etc. Ajude a salvar os macacos-pregodo- peito-amarelo.
Tarefa
As regioes propcias para o macaco-prego-do-peito-amarelo foram determinadas como retngulos cujos lados sao todos verticais ou horizontais. Sua tarefa encontrar o local ideal para a reserva ambiental, definida como a interseao de todas as regioes dadas. [IMAGE] As regioes foram divididas de tal forma que uma regiao nao tangencia qualquer outra regiao. Assim, a interseao entre quaisquer duas regioes ou um retngulo ou vazia.
Entrada
Seu programa deve ler vrios conjuntos de teste. A primeira linha de um conjunto de teste contm um inteiro nao negativo, N, que indica o nmero de regioes (o valor N = 0 indica o final da entrada). Seguem-se N linhas, cada uma contendo quatro nmeros inteiros X, Y, U e V que descrevem uma regiao: o par X, Y representa a coordenada do canto superior esquerdo e o par U, V representa a coordenada do canto inferior direito de um retngulo.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter as coordenadas do retngulo de interseao encontrado pelo seu programa, no mesmo formato utilizado na entrada. Caso a interseao seja vazia, a segunda linha deve conter a expressao "nenhum". A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 3 0 6 8 1 1 5 6 3 2 4 9 0 3 0 4 4 0 3 1 7 -3 6 4 10 0 0 Sada: Teste 1 2 4 6 3 Teste 2 nenhum
Restrioes
0 <= N -10000 -10000 -10000 -10000 <= <= <= <= <= 10000 (N = 0 apenas para indicar o fim da entrada) X <= 10000 Y <= 10000 U <= 10000 V <= 10000
Added by: Wanderley Guimaraes Date: 2006-04-20 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2000
Tarefa
Voce foi recentemente contratado pela NASA, e sua primeira tarefa escrever um programa que, conhecidos a seqencia de temperaturas medidas pelo sensor, e o tamanho do intervalo desejado, informe qual a maior e qual a menor temperatura mdia observadas, considerando o tamanho do intervalo dado.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de teste contm dois nmeros inteiros positivos N e M, que indicam respectivamente o nmero total de medioes de temperatura de uma seqencia obtida pelo sensor, e o tamanho dos intervalos, em minutos, em que as mdias devem ser calculadas. As N linhas seguintes contem um nmero inteiro cada, representando a seqencia de medidas do sensor. O final da entrada indicado quando N = M = 0.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas. A primeira linha identifica o conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter dois nmeros inteiros X e Y, separados por ao menos um espao em branco, representando respectivamente os valores da menor e da maior mdia de temperatura, conforme determinado pelo seu programa. O valor da mdia deve ser truncado, se a mdia nao for um nmero inteiro (ou seja, deve ser impressa apenas a parte inteira). A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 4 2 -5 -12 0 6 7 4 35 -35 5 100 100 50 50 0 0 Sada: Teste 1 -8 3 Teste 2 26 75
Restrioes
0 <= N <= 10000 (N = 0 apenas para indicar o fim da entrada) > -200 <= Temperatura <= 200 > 1 <= M <= N > Added by:<td>Wanderley Guimaraes Date: 2006-04-20 Time limit: 1s Source limit: 50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2002
Tarefa
Sao dados: o valor dos objetos coletados por Joao e por Jos antes de encontrarem a arca; uma lista de valores, correspondentes aos objetos encontrados dentro da arca. Como as jias sao muito valiosas, estes valores sao dados em unidades de R$ 1.000,00, ou seja, o valor 10 significa R$ 10.000,00. Voce deve escrever um programa que determina se possvel dividir os objetos da arca de forma que, considerados tambm os valores dos objetos encontrados anteriormente (que ficarao com quem os encontrou), os primos recebam partes do tesouro com o mesmo valor.
Entrada
Seu programa deve ler vrios conjuntos de testes. A primeira linha de um conjunto de testes contm tres nmeros inteiros X, Y e N. Os valores X eY representam respectivamente a soma dos valores encontrados por Joao e por Jos antes de chegarem a arca. O valor N indica o nmero de objetos encontrados na arca. Seguem-se N linhas, cada uma contendo um nmero inteiro V, correspondendo ao valor de um dos objetos da arca. O final da entrada indicado por X = Y = N = 0.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter o caractere S caso seja possvel dividir o tesouro como combinado pelos dois primos, ou o caractere N caso contrrio. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 10 20 4 3 8 7 2 1 1 6 2 7 7 12 5 3 0 0 0 Sada: Teste 1 S Teste 2 N
Restrioes
0 <= X <= 50 (X = 0 apenas para indicar o final da entrada) 0 <= Y <= 50 (Y = 0 apenas para indicar o final da entrada) 0 <= N <= 100 (N = 0 apenas para indicar o final da entrada) 1 <= V <= 100 Added by: Wanderley Guimaraes Date: 2006-04-20 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2002
817. Dobradura
Problem code: DOBRA
Tarefa
Zezinho tem aulas de Iniciaao Artstica em sua escola, e recentemente aprendeu a fazer dobraduras em papel. Ele ficou fascinado com as inmeras possibilidades de se dobrar uma simples folha de papel. Como Zezinho gosta muito de matemtica, resolveu inventar um quebra-cabea envolvendo dobraduras. Zezinho definiu uma operaao de dobradura D que consiste em dobrar duas vezes uma folha de papel quadrada de forma a conseguir um quadrado com 1/4 do tamanho original, conforme ilustrado na figura. [IMAGE] Depois de repetir N vezes esta operaao de dobradura D sobre o papel, Zezinho cortou o quadrado resultante com um corte vertical e um corte horizontal, conforme a figura abaixo. [IMAGE] Zezinho lanou entao um desafio aos seus colegas: quem adivinha quantos pedaos de papel foram produzidos?
Entrada
A entrada composta de vrios conjuntos de teste. Cada conjunto de teste composto de uma nica linha, contendo um nmero inteiro N que indica o nmero de vezes que a operaao de dobradura D foi aplicada. O final da entrada indicado por N = -1.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter o nmero de pedaos de papel obtidos depois de cortar a dobradura, calculado pelo seu programa. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 1 0 -1 Sada: Teste 1
9 Teste 2 4
Restrioes
-1 <= N <= 15 (N = -1 apenas para indicar o fim da entrada) Added by: Wanderley Guimaraes Date: 2006-04-21 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2002
818. Aeroporto
Problem code: AERO
A crescente utilizaao do transporte areo preocupa os especialistas, que preveem que o congestionamento em aeroportos poder se tornar um grande problema no futuro. Os nmeros atuais j sao alarmantes: relatrios oficiais demonstram que na Europa, em junho de 2001, houve uma mdia de 7.000 atrasos de vos por dia. Preocupada com a previsao dos seus especialistas em trfego areo, a Associaao de Transporte Areo Internacional (ATAI) est comeando um estudo para descobrir quais sao os aeroportos onde o trfego areo pode vir a ser mais problemtico no futuro.
Tarefa
Como programador recm contratado pela ATAI voce foi encarregado de escrever um programa para determinar, a partir de uma listagem de aeroportos e vos, qual aeroporto possui maior probabilidade de congestionamento no futuro. Como medida da probabilidade de congestionamento ser utilizado neste estudo o nmero total de vos que chegam ou que partem de cada aeroporto.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de teste contm dois nmeros inteiros A e V, que indicam respectivamente o nmero de aeroportos e o nmero de vos. Os aeroportos sao identificados por inteiros de 1 a A. As V linhas seguintes contem cada uma a informaao de um vo, representada por um par de nmeros inteiros positivos X e Y, indicando que h um vo do aeroporto X para o aeroporto Y. O final da entrada indicado quando A = V = 0.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas. A primeira linha identifica o conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter o identificador do aeroporto que possui maior trfego areo. Caso mais de um aeroporto possua este valor mximo, voce deve listar todos estes aeroportos, em ordem crescente de identificaao, e separados por pelo menos um espao em branco. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 5 7 1 3 2 1 3 2 3 4 4 5 3 5 2 5 3 5 1 3
1 3 1 2 0
2 2 2 1 0
Restrioes
0 <= A <= 100 (A = 0 apenas para indicar o fim da entrada) 0 <= V <= 10000 (V = 0 apenas para indicar o fim da entrada) 1 <= X <= A 1 <= Y <= A X != Y Added by: Wanderley Guimaraes Date: 2006-04-21 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2002
819. Pedgio
Problem code: PEDAGIO
Como premio pela primeira colocaao na Olimpada Brasileira de Informtica, Juquinha e sua famlia ganharam uma viagem de uma semana a Coria do Sul. Como o pas deslumbrante, com tradioes, cultura, arquitetura e culinria muito diferentes das do Brasil, o pai de Juquinha, o Sr. Juca, decidiu alugar um carro para conhecer melhor o pas. As estradas sao muito bem cuidadas; todas sao de sentido duplo, e duas cidades podem ser ligadas diretamente por mais de uma estrada. No entanto, em todas as estradas paga-se um pedgio de valor fixo (h um pedgio em cada direao, entre duas cidades). Como o Sr. Juca nao tem muito dinheiro para gastar, as viagens com o carro devem ser muito bem planejadas.
Tarefa
Escreva um programa que, conhecidas as cidades e estradas existentes no pas, e a cidade onde Juquinha e sua famlia estao, encontre cada cidade (que nao a cidade onde eles estao) que possa ser visitada por eles, dada a restriao de que o Sr. Juca deseja pagar no mximo P pedgios (considerando apenas a viagem de ida).
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de teste contm quatro nmeros inteiros C, E, L e P. Os valores C e E indicam respectivamente o nmero de cidades e o nmero de estradas existentes. As cidades sao identificadas por inteiros de 1 a C. os valores L e P indicam, respectivamente, a cidade onde a famlia de Juquinha est no momento e o nmero mximo de pedgios que o Sr. Juca est disposto a pagar. As E linhas seguintes contem cada uma a informaao de uma estrada, representada por um par de nmeros inteiros positivos X e Y, indicando que h uma estrada (de sentido duplo) da cidade X para a cidade Y. O final da entrada indicado por C = E = L = P = 0.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. Na segunda linha devem aparecer os identificadores das cidades que podem ser alcanadas, em ordem crescente, separados por pelo menos um espao em branco. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 5 4 2 1 1 2 2 3 3 4 4 5
9 2 1 2 3 9 3 4 4 7 5 4 3 0
12 1 2 1 5 1 2 3 4 8 7 6 6 5 7 0 0 0
Restrioes
0 <= C <= 50 (C = 0 apenas para indicar o fim da entrada) 0 <= E <= 2500 (E = 0 apenas para indicar o fim da entrada) 0 <= L <= C (L = 0 apenas para indicar o fim da entrada) 0 <= P <= C (P = 0 apenas para indicar o fim da entrada) 1 <= X <= C 1 <= Y <= C Added by: Wanderley Guimaraes Date: 2006-04-21 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2002
Tarefa
V Vitria est ficando velha e tem medo que deslizes de memria a faam cometer injustias com os netos, deixando de compensar as diferenas entre os cofrinhos. Sua tarefa ajudar V Vitria, escrevendo um programa de computador que indique as diferenas entre os depsitos, de forma que ela nao tenha que preocupar-se em memoriz-las.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de teste contm um nmero inteiro N, que indica o nmero de depsitos nos cofrinhos. As N linhas seguintes descrevem cada uma um depsito nos cofrinhos; o depsito indicado por dois valores inteiros J e Z, separados por um espao em branco, representando respectivamente os valores, em centavos, depositados nos cofres de Joaozinho e Zezinho. O final da entrada indicado por N = 0.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir um conjunto de linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A seguir seu programa deve escrever uma linha para cada depsito do conjunto de testes. Cada linha deve conter um inteiro que representa a diferena (em centavos) entre o valor depositado nos cofrinhos do Joaozinho e do Zezinho. Deixe uma linha em branco ao final de cada conjunto de teste. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 3 20 25 10 5 10 10 4 0 5 12 0
Restrioes
0 <= N <= 100 (N = 0 apenas para indicar o fim da entrada) 0 <= J <= 100 (valor de cada depsito no cofre de Joaozinho) 0 <= Z <= 100 (valor de cada depsito no cofre de Zezinho) Added by: Wanderley Guimaraes Date: 2006-05-05 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2003
841. Estgio
Problem code: ESTAGIO
Voce conseguiu um estgio para trabalhar como programador na secretaria da sua escola. Como primeira tarefa, Dona Vilma, a coordenadora, solicitou que voce aprimore um programa que foi desenvolvido pelo estagirio anterior. Esse programa tem como entrada uma lista de nomes e de mdias finais dos alunos de uma turma, e determina o aluno com a maior mdia na turma. Dona Vilma pretende utilizar o programa para premiar o melhor aluno de cada turma da escola. O programa desenvolvido pelo estagirio anterior encontra-se no final (em C, C++ e Pascal). Como voce pode verificar, o programa na forma atual tem uma imperfeiao: no caso de haver alunos empatados com a melhor mdia na turma, ele imprime apenas o primeiro aluno que aparece na lista.
Tarefa
Dona Vilma deseja que voce altere o programa para que ele produza uma lista com todos os alunos da turma que obtiveram a maior mdia, e nao apenas um deles. Voce consegue ajud-la nesta tarefa?
Entrada
A entrada constituda de vrios conjuntos de teste, representando vrias turmas. A primeira linha de um conjunto de testes contm um nmero inteiro N (1 <= N <= 1000) que indica o total de alunos na turma. As N linhas seguintes contem, cada uma, um par de nmeros inteiros C (1 <= C <= 20000) e M (0 <= M <= 100), indicando respectivamente o cdigo e a mdia de um aluno. O final da entrada indicado por uma turma com N = 0.
Sada
Para cada turma da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Turma n", onde n numerado a partir de 1. A segunda linha deve conter os cdigos dos alunos que obtiveram a maior mdia da turma. Os cdigos dos alunos devem aparecer na mesma ordem da entrada, e cada um deve ser seguido de um espao em branco. A terceira linha deve ser deixada em branco. O formato mostrado no exemplo de sada abaixo deve ser seguido rigorosamente.
Exemplo
Entrada: 3 1 85 2 91 3 73 5 12300 81 12601 99 15023 76 10111 99
Restrioes
0 <= N <= 1000 (N = 0 apenas para indicar o fim da entrada) 1 <= C <= 20000 0 <= M <= 100 Cdigo em Pascal
program estagio; const MAX_ALUNOS = 1000; type registro_aluno = record codigo, media : integer; end; var alunos : array[1..MAX_ALUNOS] of registro_aluno; n, i, indice_melhor, turma : integer; begin readln(n); { le numero de alunos da primeira turma } turma := 1; while n > 0 do begin for i := 1 to n do { le dados dos alunos } readln(alunos[i].codigo, alunos[i].media); indice_melhor := 1; for i := 2 to n do { procura aluno de maior media } if alunos[i].media > alunos[indice_melhor].media then indice_melhor := i; { escreve resposta } writeln(Turma , turma); turma := turma + 1; writeln(alunos[indice_melhor].codigo); writeln; { le numero de alunos da proxima turma } readln(n); end; end.
Cdigo em C
#include <stdio.h> #define MAX_ALUNOS 1000 int main() { int i, indice_melhor, n; int turma=1; struct { int codigo, media; } alunos[MAX_ALUNOS]; /* le numero de alunos da primeira turma */
scanf("%d", &n); while (n > 0) { /* le dados dos alunos */ for (i = 0; i < n; i++) scanf("%d %d", &alunos[i].codigo, &alunos[i].media); /* procura aluno de maior media */ indice_melhor = 0; for (i = 1; i < n; i++) if (alunos[i].media > alunos[indice_melhor].media) indice_melhor = i; /* escreve resposta */ printf("Turma %d\n%d\n\n", turma++, alunos[indice_melhor].codigo); /* le numero de alunos da proxima turma */ scanf("%d", &n); } return 0; }
Cdigo em C++
#include <iostream> const int MAX_ALUNOS = 1000; int main() { int i, indice_melhor, n; int turma=1; struct { int codigo, media; } alunos[MAX_ALUNOS]; // le numero de alunos da primeira turma cin >> n; while (n > 0) { // le dados dos alunos for (i = 0; i < n; i++) cin >> alunos[i].codigo >> alunos[i].media; // procura aluno de maior media indice_melhor = 0; for (i = 1; i < n; i++) if (alunos[i].media > alunos[indice_melhor].media) indice_melhor = i; // escreve resposta cout << "Turma " << turma++ << "\n"; cout << alunos[indice_melhor].codigo << "\n\n"; // le numero de alunos da proxima turma cin >> n; } return 0; }
Added by: Wanderley Guimaraes Date: 2006-05-05 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2003
Tarefa
Sua tarefa escrever um programa que determine quantos movimentos de trocar um disco de um pino para outro serao executados pelo algoritmo acima para resolver o quebra-cabea.
Entrada
A entrada possui vrios conjuntos de teste. Cada conjunto de teste composto por uma nica linha, que contm um nico nmero inteiro N (0 <= N <= 30), indicando o nmero de discos. O final da entrada indicado por N = 0.
Sada
Para cada conjunto de teste, o seu programa deve escrever tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A segunda linha deve conter o nmero de movimentos que sao executados pelo algoritmo dado para resolver o problema das Torres de Hani com N discos. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 1 2 0 Sada Teste 1 1 Teste 2 3
Restrioes
0 <= N <= 30 (N = 0 apenas para indicar o final da entrada) Added by: Wanderley Guimaraes Date: 2006-05-05 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2003
843. Supermercado
Problem code: SUPERMER
A rede de supermercados BemBom, da cidade de Planalto, decidiu reformular o armazenamento de seus estoques. No sistema atual, cada uma das lojas da rede possui espao para armazenar um pequeno estoque, sendo freqentemente necessrio transportar mercadorias de uma loja para outra. Para racionalizar o transporte e aumentar a capacidade de estoque, a direao da rede Bem-Bom decidiu instalar um depsito central. De forma a diminuir os custos com transporte, ficou definido que o novo depsito deve ser localizado em um quarteirao que minimize a soma das distncias dele at todas as lojas da rede. Por ser uma cidade planejada, Planalto possui uma caracterstica muito peculiar. Todas as suas ruas sao orientadas na direao leste-oeste ou norte-sul, e todos os quarteiroes sao do mesmo tamanho. Veja uma parte do mapa de Planalto na figura abaixo. Os quarteiroes em Planalto sao identificados pelo nmero de quadras, em cada direao, que os separam da localizaao da prefeitura (0,0). Localizaoes a leste e a norte da prefeitura sao identificadas por coordenadas positivas, e localizaoes a oeste e a sul por coordenadas negativas. [IMAGE] Parte do mapa de Planalto
Tarefa
A sua tarefa , dadas as coordenadas dos quarteiroes onde estao localizados todos os supermercados da rede, determinar o quarteirao onde deve ser instalado o novo depsito. A localizaao deste depsito deve ser tal que a soma das distncias entre o depsito e as lojas, em nmero de quarteiroes em ambas as direoes, seja a menor possvel. A distncia entre dois quarteiroes dada pela distncia entre eles na direao leste-oeste mais a distncia na direao norte-sul. Por exemplo, a distncia entre os quarteiroes (2,-1) e (4, 3) 2 + 4 = 6.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de cada conjunto de teste contm um nmero inteiro S que o nmero de supermercados da rede. A seguir, sao dadas S linhas, cada uma contendo dois nmeros inteiros X e Y, representando as coordenadas do quarteirao onde se situa um dos supermercados. X representa a coordenada na direao leste-oeste e Y represetna a coordenada na direao norte-sul. O final da entrada dado por um conjunto de teste com S = 0.
Sada
Para cada conjunto de teste, o seu programa deve escrever tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A segunda linha deve conter as coordenadas X e Y do quarteirao onde deve ser instalado o novo depsito, separadas por um espao em branco. Se mais de um quarteirao
puder ser escolhido como localizaao do depsito, seu programa pode imprimir qualquer um deles. A terceira linha deve ser deixada em branco. O formato do exemplo de sada abaixo deve ser seguido rigorosamente.
Exemplo
Entrada: 4 1 2 -3 -3 4 -1 -5 0 5 1 3 7 13 25 13 15 14 25 1 0 Sada: Teste 1 -2 0 Teste 2 15 13
Restrioes
0 <= S <= 1000 (S = 0 apenas para indicar o final da entrada) -1000 <= X <= 1000 -1000 <= Y <= 1000 Added by: Wanderley Guimaraes Date: 2006-05-05 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2003
Tarefa
Sua tarefa escrever um programa que, a partir de uma lista de autores de artigos, determine o nmero de Erdos dos autores.
Entrada
A entrada constituda por vrios conjuntos de teste. A primeira linha de um conjunto de teste contm um nmero inteiro A (1 <= A <= 100), que indica o nmero de artigos. Cada uma das A linhas seguintes contm a lista de autores de um artigo. Cada autor identificado pela inicial de seu nome (em maiscula), seguida de um ponto e de um espao em branco (indicando que o nome est abreviado), seguida de seu ltimo sobrenome (P. Erdos, por exemplo). O sobrenome de um autor possui, no mximo, 15 letras, e apenas a letra inicial aparece em maiscula. Os autores sao separados por vrgulas, e a lista de autores de um artigo termina com um ponto (veja os exemplos abaixo). Um nico espao em branco separa a abreviatura do nome do sobrenome, bem como o nome de um autor do anterior. Espaos em branco nao sao usados em outros locais. Um artigo possui, no mximo, 10 autores, e o total de autores nao excede 100. O final da entrada indicado por A = 0.
Sada
Para cada conjunto de teste da entrada seu programa deve produzir um conjunto de linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A seguir devem aparecer uma linha para cada autor do conjunto de testes (exceto o prprio P. Erdos). Cada linha deve conter o nome do autor seguido pelo caractere :, um espao em branco e o seu nmero de Erdos. Caso o nmero de Erdos de um determinado autor seja infinito, escreva infinito. A sada deve ser ordenada alfabeticamente pelo sobrenome do autor, e, em caso de mesmo sobrenome, o desempate deve ser feito pela inicial do primeiro nome. Imprima uma linha em branco ao final de cada conjunto de teste. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 5 P. Erdos, A. Selberg. P. Erdos, J. Silva, M. Souza. M. Souza, A. Selberg, A. Oliveira. J. Ninguem, M. Ninguem. P. Duarte, A. Oliveira. 2 Z. Silva, P. Erdos. Z. Souza. 0 Sada Teste 1 P. Duarte: 3 J. Ninguem: infinito M. Ninguem: infinito A. Oliveira: 2 A. Selberg: 1 J. Silva: 1 M. Souza: 1 Teste 2 Z. Silva: 1 Z. Souza: infinito
Restrioes
0 1 1 1 <= <= <= <= A <= 100 (nmero de artigos de um caso de teste; A = 0 apenas para indicar final da entrada) tamanho, em nmero de letras, do sobrenome de um autor <= 15 nmero de autores de um artigo <= 10 nmero total de autores em um conjunto de teste <= 100
Added by: Wanderley Guimaraes Date: 2006-05-05 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2003
845. Tetris
Problem code: OBITETRI
A sua turma do colgio resolveu organizar um campeonato de tetris. Aps discussao sobre as regras, ficou definido que cada aluno jogaria um total de 12 partidas. Das 12 pontuaoes obtidas por um aluno, a maior e a menor sao descartadas, e as demais sao somadas, resultando na pontuaao final do aluno.
Tarefa
Como voce possui conhecimentos de programaao, acabou sendo designado pela turma para escrever um programa para imprimir a classificaao final do campeonato, a partir das pontuaoes de cada jogador.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de testes contm um nmero inteiro J, que indica o nmero de jogadores que participaram do campeonato. A seguir, para cada jogador h duas linhas na entrada: a primeira possui o nome do jogador (formado apenas por letras, sendo apenas a inicial em maiscula, e com no mximo 15 letras), e a segunda possui as 12 pontuaoes que o jogador obteve, separadas por espao. As pontuaoes sao inteiros entre 0 e 1000. O final da entrada indicado por um conjunto de teste com J = 0.
Sada
Para cada conjunto de teste, o seu programa deve escrever uma linha contendo o identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A seguir, o seu programa deve escrever a classificaao final no campeonato, utilizando uma linha para cada participante. Cada linha deve conter tres informaoes, separadas por um espao em branco: a classificaao do jogador, a sua pontuaao final, e o seu nome. A classificaao de um jogador igual a 1 mais o nmero de jogadores que obtiveram pontuaao maior do que a sua. Em caso de empate, os jogadores devem ser ordenados em ordem alfabtica. Depois de toda a classificaao, deve ser deixada uma linha em branco. O formato do exemplo de sada abaixo deve ser seguido rigorosamente.
Exemplo
Entrada: 4 Zezinho 100 123 133 333 400 300 129 200 360 340 200 600 Luizinho 60 50 120 250 170 190 190 220 260 270 290 300 Carlinhos 10 10 20 10 10 10 10 20 20 20 20 20 Joaozinho 200 300 400 400 500 500 500 600 650 650 700 810 3
Pedrinho 100 100 200 200 300 300 400 400 500 500 600 600 Huguinho 50 100 200 200 300 300 500 500 400 400 600 700 Zezinho 100 100 100 100 100 100 100 100 100 100 100 100 0 Sada: Teste 1 1 5200 Joaozinho 2 2518 Zezinho 3 2020 Luizinho 4 150 Carlinhos Teste 2 1 3500 Huguinho 1 3500 Pedrinho 3 1000 Zezinho
Restrioes
0 <= J <= 1000 (J = 0 apenas para indicar final da entrada) 0 <= pontuaao em uma partida <= 1000 1 <= tamanho dos nomes, em nmero de letras <= 15 Added by: Wanderley Guimaraes Date: 2006-05-05 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2003
1330. Meteoros
Problem code: METEORO
Em noites sem nuvens pode-se muitas vezes observar pontos brilhantes no cu que se deslocam com grande velocidade, e em poucos segundos desaparecem de vista: sao as chamadas estrelas cadentes, ou meteoros. Meteoros sao na verdade partculas de poeira de pequenas dimensoes que, ao penetrar na atmosfera terrestre, queimam-se rapidamente (normalmente a uma altura entre 60 120 quilmetros). Se os meteoros sao suficientemente grandes, podem nao queimar-se completamente na atmosfera e dessa forma atingem a superfcie terrestre: nesse caso sao chamados de meteoritos. Z Felcio um fazendeiro que adora astronomia e descobriu um portal na Internet que fornece uma lista das posioes onde caram meteoritos. Com base nessa lista, e conhecendo a localizaao de sua fazenda, Z Felcio deseja saber quantos meteoritos caram dentro de sua propriedade. Ele precisa de sua ajuda para escrever um programa de computador que faa essa verificaao automaticamente.
Tarefa
Sao dados: uma lista de pontos no plano cartesiano, onde cada ponto corresponde a posiao onde caiu um meteorito; as coordenadas de um retngulo que delimita uma fazenda. As linhas que delimitam a fazenda sao paralelas aos eixos cartesianos. Sua tarefa escrever um programa que determine quantos meteoritos caram dentro da fazenda (incluindo meteoritos que caram exatamente sobre as linhas que delimitam a fazenda).
Entrada
Seu programa deve ler vrios conjuntos de testes. A primeira linha de um conjunto de testes quatro nmeros inteiros X1, Y1, X2 e Y2, onde (X1, Y1) a coordenada do canto superior esquerdo e (X2, Y2) a coordenada do canto inferior direito do retngulo que delimita a fazenda. A segunda linha contm um inteiro, N, que indica o nmero de meteoritos. Seguem-se N linhas, cada uma contendo dois nmeros inteiros X e Y, correspondendo as coordenadas de cada meteorito. O final da entrada indicado por X1 = Y1 = X2 = Y2 = 0.
Exemplo de entrada 2 4 5 1 2 1 2 3 3 2 4 3 2 3 1 1 2 2 3 3 0 0 0 0
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter o nmero de meteoritos que caram dentro da fazenda. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo de sada Teste 1 1 Teste 2 2
Restrioes
0 <= N <= 10.000 > 0 <= X <= 10.000 > 0 <= Y <= 10.000 > 0 <= X1 < X2 <= 10.000 > 0 <= Y2 < Y1 <= 10.000 ><p> Added by: Wanderley Guimaraes Date: 2007-02-24 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2001
1331. Domin
Problem code: OBIDOMIN
Todos conhecem o jogo de domins, em que peas com dois valores devem ser colocadas na mesa em seqencia, de tal forma que os valores de peas imediatamente vizinhas sejam iguais. O objetivo desta tarefa determinar se possvel colocar todas as peas de um conjunto dado em uma formaao vlida.
Tarefa
dado um conjuto de peas de domin. Cada pea tem dois valores X e Y, com X e Y variando de 0 a 6 (X pode ser igual a Y). Sua tarefa escrever um programa que determine se possvel organizar todas as peas recebidas em seqencia, obedecendo as regras do jogo de domin.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de testes contm um nmero inteiro N que indica a quantidade de peas do conjunto. As N linhas seguintes contem, cada uma, a descriao de uma pea. Uma pea descrita por dois inteiros X e Y (0 <= X <= 6 e 0 <= Y <= 6) que representam os valores de cada lado da pea. O final da entrada indicado por N = 0.
Exemplo de Entrada 3 0 1 2 1 2 1 2 1 1 0 0 6 3 0 0 0 1 6 4 1 0 6 2 3 0
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter a expressao "sim" se for possvel organizar todas as peas em uma formaao vlida ou a expressao "nao" (note a ausencia de acento) caso contrrio. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Restrioes
0 <= N <= 100 (N = 0 apenas para indicar o final da entrada) Added by: Wanderley Guimaraes Date: 2007-02-24 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2001
1332. Dengue
Problem code: DENGUE
A Costa do Mosquito um pas pequeno mas paradisaco. Todos os habitantes tem boas moradias, bons empregos, o clima agradvel, e os governantes sao justos e incorruptveis. O sistema de transporte pblico da Costa do Mosquito composto de uma rede de linhas de trem. O sistema foi projetado de forma peculiar: existe um nico percurso ligando duas quaisquer vilas (esse percurso possivelmente passa por outras vilas). Por exemplo, na figura abaixo, que mostra um trecho do mapa da Costa do Mosquito, h apenas um percurso entre as vilas A e C, passando pelas vilas B, G e D. Uma tarifa fixa de M$ 1,00 cobrada por cada viagem entre vilas vizinhas; assim, para uma viagem de A a C o usurio gasta M$ 4,00. Devido a um inesperado surto de dengue, o Ministrio da Sade da Costa do Mosquito resolveu montar um Posto de Vacinaao. Para evitar que habitantes gastem muito dinheiro para se deslocar at a vila onde ficar o Posto de Vacinaao, o Ministrio da Sade decidiu que este dever ser instalado em uma vila de forma que o gasto com transporte at o Posto, para os habitantes que gastarem mais, seja o menor possvel (para o caso da figura abaixo a vila escolhida seria G).
E | | A --- B --- G --- D --- C | | F Figura: Trecho do mapa da Costa do Mosquito.
Tarefa
Sua tarefa escrever um programa que determine uma vila onde deve ser instalado o Posto de Vacinaao. Esta vila deve ser tal que o custo com transporte, para os habitantes que tiverem maior custo, seja o menor possvel. Note que devido a caracterstica peculiar do sistema virio, ou haver uma nica vila que satisfaz essa restriao, ou haver duas vilas que a satisfazem. No caso de existirem duas vilas apropriadas, qualquer uma delas serve como soluao.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de testes contm um nmero inteiro N que indica a quantidade de vilas do pas. As vilas sao numeradas de 1 a N. As N-1 linhas seguintes contem, cada uma, dois inteiros positivos X e Y que indicam que a vila X tem um caminho que a liga diretamente com a vila Y, sem passar por outras vilas. O final da entrada indicado por N = 0.
Exemplo de Entrada 2 1 2 7 1 2 2 5 7 4 7 2 4 6 3 4 1 0
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter o nmero da vila na qual deve ser instalado o Posto de Vacinaao. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo de Sada Teste 1 1 Teste 2 7 Teste 3 1
Restrioes
0 <= N <= 100 (N = 0 apenas para indicar o final da entrada) Added by: Wanderley Guimaraes Date: 2007-02-24 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2001
1333. Sorvete
Problem code: SORVETE
Joaozinho um menino que costuma ir a praia todos os finais de semana com seus pais. Eles freqentam sempre a mesma praia, mas cada semana o pai de Joaozinho estaciona o carro em um local diferente ao longo da praia, e instala sua famlia em um ponto na praia em frente ao carro. Joaozinho muito comilao, e adora de tomar sorvete na praia. Contudo, alguns dias acontece de nenhum sorveteiro passar pelo local onde eles estao. Intrigado com isto, e nao querendo mais ficar sem tomar seu sorvete semanal, Joaozinho foi at a Associaao dos Sorveteiros da Praia (ASP), onde ficou sabendo que cada sorveteiro passa o dia percorrendo uma mesma regiao da praia, indo e voltando. Alm disto, cada sorveteiro percorre todos os dias a mesma regiao. Joaozinho conseguiu ainda a informaao dos pontos de incio e fim da regiao percorrida por cada um dos sorveteiros. Com base nestes dados, Joaozinho quer descobrir os locais da praia onde o pai dele deve parar o carro, de forma que pelo menos um sorveteiro passe naquele local. S que o volume de dados muito grande, e Joaozinho est pensando se seria possvel utilizar o computador para ajud-lo nesta tarefa. No entanto Joaozinho nao sabe programar, e est pedindo a sua ajuda.
Tarefa
Voce deve escrever um programa que leia os dados obtidos pelo Joaozinho e imprima uma lista de intervalos da praia por onde passa pelo menos um sorveteiro.
Entrada
Seu programa deve ler vrios conjuntos de teste. A primeira linha de um conjunto de teste contm dois inteiros nao negativos, P e S, que indicam respectivamente o comprimento em metros da praia e o nmero de sorveteiros. Seguem-se S linhas, cada uma contendo dois nmeros inteiros U e V que descrevem o intervalo de trabalho de cada um dos sorveteiros, em metros contados a partir do incio da praia (U < V, 0 <= U <= P e 0 <= V <= P). O final da entrada indicado por S = 0 e P = 0.
Exemplo de Entrada 200 2 0 21 110 180 1000 3 10 400 80 200 400 1000 10 2 1 4 5 6 0 0
Sada
Para cada conjunto de teste da entrada seu programa deve produzir uma lista dos intervalos da praia que sao servidos por pelo menos um sorveteiro. A lista deve ser precedida de uma linha que identifica o conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. Cada intervalo da lista deve aparecer em uma linha separada, sendo descrito por dois nmeros inteiros U e V, representando respectivamente o incio e o final do intervalo (U <V). O final da lista de intervalos deve ser indicado por uma linha em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo de Sada Teste 1 0 21 110 180 Teste 2 10 1000 Teste 3 1 4 5 6
Restrioes
0 <= P <= 10000 (P = 0 apenas para indicar o final da entrada) > 0 <= S <= 5000 (S = 0 apenas para indicar o final da entrada) > 0 <= U <V <= P Added by: Wanderley Guimaraes Date: 2007-02-24 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2001
1334. Calculando
Problem code: CALCULA
A disseminaao dos computadores se deve principalmente a capacidade de eles se comportarem como outras mquinas, vindo a substituir muitas destas. Esta flexibilidade possvel porque podemos alterar a funcionalidade de um computador, de modo que ele opere da forma que desejarmos: essa a base do que chamamos programaao.
Tarefa
Sua tarefa escrever um programa que faa com que o computador opere como uma calculadora simples. O seu programa deve ler expressoes aritmticas e produzir como sada o valor dessas expressoes, como uma calculadora faria. O programa deve implementar apenas um subconjunto reduzido das operaoes disponveis em uma calculadora: somas e subtraoes.
Entrada
A entrada composta de vrios conjuntos de testes. A primeira linha de um conjunto de testes contm um nmero inteiro m (1 <= m <= 100), indicando o nmero de operandos da expressao a ser avaliada. A segunda linha de um conjunto de testes contm a expressao aritmtica a ser avaliada, no seguinte formato: X 1 s 1 X 2 s 2 ... X m-1 s m-1 X m onde X i , 1 <= i <= m, um operando (0 <= X i <= 100); s j , 1 <= j <m, um operador, representado pelos smbolos + ou -; nao h espaos em branco entre operandos e operadores. O final da entrada indicado pelo valor m = 0.
Exemplo de Entrada 3 3+7-22 3 5-10-77 10 1+2+3+4+5+6+7+8+9+10 0
Sada
Para cada conjunto de testes da entrada seu programa deve produzir tres linhas. A primeira linha deve conter um identificador da expressao, no formato "Teste n", onde n numerado a partir de 1. Na segunda linha deve aparecer o resultado encontrado pelo seu programa. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Restrioes
1 <= m <= 100 > 0 <= X i<sub> <= 100 para todo 1 <= i <= m Added by: Wanderley Guimaraes Date: 2007-02-24 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2001
Tarefa
Dada uma seqencia de informaoes sobre partidas de Par ou mpar (nomes dos jogadores e nmeros que os jogadores escolheram), voce deve escrever um programa para indicar o vencedor de cada uma das partidas.
Entrada
A entrada composta de vrios conjuntos de testes. A primeira linha de um conjunto de testes contm um inteiro N, que indica o nmero de partidas de Par ou mpar que aconteceram. As duas linhas seguintes contem cada uma um nome de jogador. Um nome de jogador uma cadeia de no mnimo um e no mximo dez letras (maisculas e minsculas), sem espaos em branco. As N linhas seguintes contem cada uma dois inteiros A e B que representam o nmero de dedos que cada jogador mostrou em cada partida (0 <= A <= 5 e 0 <= B <= 5). Em todas as partidas, o primeiro jogador sempre escolhe Par. O final da entrada indicado por N = 0.
Exemplo de entrada 3 Pedro Paulo 2 4 3 5 1 0 2 Claudio Carlos 1 5 2 3 0
Sada
Para cada conjunto de teste da entrada, seu programa deve produzir a sada da seguinte forma. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. As prximas N linhas devem indicar o nome do vencedor de cada partida. A prxima linha deve ser deixada em branco. A grafia mostrada no Exemplo de 3 Sada, abaixo, deve ser seguida rigorosamente.
Restrioes
0 <= N <= 1000 (N = 0 apenas para indicar o fim da entrada) > 0 <= A <= 5<code> > 0 <= B <= 5<code> > 1 <= comprimento do nome de jogador <= 10<code> Added by: Wanderley Guimaraes Date: 2007-03-07 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2004
Tarefa
Voce deve escrever um programa para determinar o dimetro mnimo que a pea deve ter de tal forma que, com seu eixo encaixado em um dos furos da placa, a parte circular cubra completamente todos os outros furos da placa.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de teste contm um inteiro N, que indica o nmero de furos na placa de ao (1 <= N <= 1000). As N linhas seguintes contem cada uma dois inteiros X e Y , separados por um espao em branco, que descrevem a posiao do centro de um furo (-10000 <= X <= 10000 e -10000 <= Y <= 10000). A unidade de medida das coordenadas dos furos 1 mm. O final da entrada indicado por N = 0.
Exemplo de Entrada 3 20 25 10 5 10 10 3 0 5 10 0 0 10 0
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A segunda linha deve conter o dimetro mnimo que a pea deve ter, como um nmero inteiro. A terceira linha em deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Restrioes
0 <= N <= 1000 (N = 0 apenas para indicar o fim da entrada) > -10000 <= X <= 10000<code> > -10000 <= Y <= 10000<code> Added by: Wanderley Guimaraes Date: 2007-03-07 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2004
1365. Palndrome
Problem code: PAL
Uma cadeia de caracteres chamada de palndrome se seqencia de caracteres da esquerda para a direita igual a seqencia de caracteres da direita para a esquerda (uma outra definiao que o primeiro caractere da cadeia deve ser igual ao ltimo caractere, o segundo caractere seja igual ao penltimo caractere, o terceiro caractere seja igual ao antepenltimo caractere, e assim por diante). Por exemplo, as cadeias de caracteres mim, axxa e ananaganana sao exemplos de palndromes. Se uma cadeia nao palndrome, ela pode ser dividida em cadeias menores que sao palndromes. Por exemplo, a cadeia aaxyx pode ser dividida de quatro maneiras distintas, todas elas contendo apenas cadeias palndromes: {aa, xyx}, {aa, x, y, x}, {a, a, xyx} e {a, a, x, y, x}.
Tarefa
Escreva um programa que determine qual o menor nmero de partes em que uma cadeia deve ser dividida de forma que todas as partes sejam palndromes.
Entrada
A entrada constituda de vrios conjuntos de teste. A primeira linha de um conjunto de testes contm um inteiro N que indica o nmero de caracteres da cadeia (1 <= N <= 2000). A segunda linha contm a cadeia de caracteres, composta por letras minsculas (de a a z), sem espaos em branco. O final da entrada indicado por N = 0.
Exemplo de Entrada 3 axa 6 xyzyyx 10 bbabcbbaab 0
Sada
Para cada conjunto de teste da entrada seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter um inteiro indicando o menor nmero de partes que a cadeia de entrada deve ser dividida de forma que todas as partes sejam palndromes. A terceira linha deve ser deixada em branco. O formato mostrado no exemplo de sada abaixo deve ser seguido rigorosamente.
Restrioes
0 <= N <= 2000 (N = 0 apenas para indicar o fim da entrada) Added by: Wanderley Guimaraes Date: 2007-03-07 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2004
1366. TV da Vov
Problem code: TV
A vov tem um televisor muito antigo, que ultimamente est exibindo um defeito incmodo: a imagem aparece deslocada (para cima ou para baixo, para o lado direito ou para o lado esquerdo). Quando a imagem est deslocada para cima, a parte da imagem que deixa de ser vista na parte superior reaparece na parte de baixo da tela. Da mesma forma, quando a imagem est deslocada a direita, a parte da imagem que deixa de ser vista a direita reaparece na tela do lado esquerdo. [IMAGE] A imagem do televisor pode ser vista como uma matriz de pontos organizados em linhas e colunas. Para consertar o televisor da vov, voce pode ajustar a imagem introduzindo uma srie de comandos de correao em um painel de ajuste. Cada comando de correao desloca a imagem de um certo nmero de linhas (para cima ou para baixo) e um certo nmero de colunas (para a direita ou para a esquerda).
Tarefa
Dada uma matriz que representa uma imagem defeituosa e uma srie de comandos de correao, seu programa deve calcular a matriz que representa a imagem resultante aps todos os comandos terem sido aplicados sequencialmente.
Entrada
A entrada possui vrios conjuntos de teste. Cada conjunto de teste inicia com a descriao da matriz que representa a imagem do televisor. A primeira linha contm dois inteiros M e N representando o nmero de linhas e o nmero de colunas da matriz (1 <= M <= 1000 e 1 <= N <= 1000). As M linhas seguintes da entrada contm cada uma N inteiros, descrevendo o valor de cada ponto da imagem. Aps a descriao da imagem, segue-se a descriao dos comandos de correao. Cada comando de correao descrito em uma linha contendo dois inteiros X e Y. O valor de X representa o deslocamento na direao horizontal (valor positivo representa deslocamento para a direita, valor negativo para a esquerda), e o valor de Y representa o deslocamento da direao vertical (valor positivo para cima, valor negativo para baixo). O final da lista de comandos indicado por X = Y = 0, e o final da entrada indicado por M = N = 0.
Exemplo de Entrada 3 3 1 2 3 4 5 6 7 8 9 1 0 1 -1 0 0 3 4 6 7 8 5 10 11 12 9
2 3 4 1 -3 2 0 0 0 0
Sada
Para cada conjunto de teste, o seu programa deve produzir uma imagem na sada. A primeira linha da sada deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A seguir deve aparecer a matriz que representa a imagem resultante, no mesmo formato da imagem de entrada. Ou seja, as N linhas seguintes devem conter cada uma M inteiros que representam os pixels da imagem. Aps a imagem deixe uma linha em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo de Sada Teste 1 8 9 7 2 3 1 5 6 4 Teste 2 1 2 3 4 5 6 7 8 9 10 11 12
Restricoes
0 <= N <= 1000 (N = 0 apenas para indicar o final da entrada) > 0 <= M <= 1000<code> (M = 0 apenas para indicar o final da entrada) > 0 <= X <= 1000<code> > 0 <= Y <= 1000<code> > 0 <= nmero de comandos de correao em cada conjunto de teste <= 1000<code> Added by: Wanderley Guimaraes Date: 2007-03-07 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2004
As associaoes entre nmeros e letras sao mostradas como botoes numa tela sensvel ao toque, permitindo que o cliente selecione os botoes correspondentes a senha. Considerando a disposiao dos botoes da figura acima, a senha 384729 seria digitada como BCEAEB (note que a mesma seqencia de letras seria digitada para outras senhas, como por exemplo 982123). Cada vez que o cliente usa o caixa eletrnico, as letras utilizadas sao as mesmas (de A a E), com os botoes nas mesmas posioes, mas os dgitos sao trocados de lugar. Assim, caso um intruso veja (mesmo que mais de uma vez) a seqencia de letras digitada, nao possvel notar facilmente qual a senha do cliente do banco.
Tarefa
Dada uma seqencia de associaoes entre letras e nmeros, e as letras digitadas pelo cliente do banco para cada uma dessas associaoes, voce deve escrever um programa para determinar qual a senha do cliente.
Entrada
A entrada composta de vrios conjuntos de testes. A primeira linha de um conjunto de testes contm um inteiro N, que indica o nmero de associaoes entre letras e nmeros e as senhas digitadas (2 <= N <= 10). As N linhas seguintes contem as entradas da seguinte forma: 10 dgitos, em ordem de associaao, para as letras de A a E (2 dgitos para a letra A, 2 para a B e assim sucessivamente) e 6 letras que representam a senha codificada conforme os dgitos anteriores. As N associaoes fornecidas em um conjunto de testes serao sempre suficientes para definir univocamente a senha do cliente. O final da entrada indicado por N = 0.
Exemplo 2 1 7 3 9 9 0 7 5 3 0 1 2 3 1 3 5 4 3 2 0 4 0
de Entrada 0 8 5 6 2 4 B C E A E B 8 4 6 2 3 1 E C C B D A 4 5 6 7 8 9 B C D D E E 6 8 7 9 0 2 E B C D C D 5 9 7 6 8 1 A C D D E C
Sada
Para cada conjunto de teste da entrada, seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A segunda linha deve conter a senha do cliente, com um espao aps cada dgito. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo de Sada Teste 1 3 8 4 7 2 9 Teste 2 2 5 6 7 8 9
Restrioes
2 <= N <= 10 (N = 0 apenas para indicar o fim da entrada) Added by: Wanderley Guimaraes Date: 2007-03-07 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2004
1368. Orkut
Problem code: ORKUT
Larissa acaba de entrar para o Orkut, um site na internet que permite que as pessoas se renam em comunidades e grupos de amigos. Como ela acabou de se registrar, ela ainda nao possui muitos amigos na sua lista de contatos. Aps fazer uma pesquisa, ela descobriu que os seus antigos amigos de escola (que adoravam mexer com computadores) tambm fazem parte do Orkut. Larissa entao decidiu cham-los para serem seus amigos virtuais. Porm, eles resolveram brincar com a Larissa, e cada um deles s vai aceitar o pedido de Larissa quando ela j for amiga virtual de alguns dos outros amigos do grupo. Assim, para conseguir ter todos os seus antigos amigos de escola na sua lista de amigos do Orkut, ela deve cumprir as exigencias de cada um deles.
Tarefa
Larissa acha que pode encontrar uma seqencia de nomes dos amigos, de modo que se ela pedir a cada um deles para ser sua amiga no Orkut, obedecendo a seqencia, todas as exigencias serao cumpridas e todos eles irao aceitar o seu pedido. Larissa precisa da sua ajuda para resolver esse problema de forma rpida. A sua tarefa escrever um programa para encontrar uma seqencia de nomes que resolva o problema, ou dizer que nao possvel encontrar tal seqencia.
Entrada
A entrada composta de vrios conjuntos de teste. A primeira linha de um conjunto de teste contm um inteiro N que indica o nmero de antigos amigos da Larissa (1 <= N <= 30). A linha seguinte ir conter N nomes de amigos, separados por espao em branco. Cada nome nao ter mais de 15 letras, e serao todos distintos. Nas prximas N linhas serao indicadas as exigencias que a Larissa deve cumprir. Cada linha descreve a exigencia de um amigo e comear com o nome desse amigo, seguido de um nmero M (0 <= M <= N - 1), que indica o nmero de pessoas que aquele amigo quer que a Larissa seja amiga antes, e seguido pelos M nomes de amigos (cada item na linha separado por espao em branco). O final da entrada indicado por N = 0.
Exemplo de Entrada 5 Joao Maria Tadeu Jose Ricardo Joao 2 Maria Ricardo Maria 1 Tadeu Jose 1 Joao Tadeu 0 Ricardo 0 3 Joao Maria Renata Maria 1 Joao Joao 1 Renata Renata 1 Maria 0
Sada
Para cada conjunto de teste seu programa deve produzir tres linhas na sada. A primeira linha dever conter um identificador do conjunto de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A segunda linha deve conter a seqencia de nomes de amigos (cada nome seguido de um espao em branco) que resolve o problema da Larissa, ou a palavra "impossivel", quando nao houver uma seqencia possvel (note a ausencia de acentuaao). Se existir mais de uma seqencia de amigos que resolve o problema, imprima qualquer uma delas (mas apenas uma). A terceira linha dever ser deixada em branco. A grafia mostrada no Exemplo de Sada abaixo dever ser seguida rigorosamente.
Exemplo de Sada Teste 1 Ricardo Tadeu Maria Joao Jose Teste 2 impossivel
Restrioes
0 <= N <= 30 (N = 0 apenas para indicar o fim da entrada) > 0 <= M <= N - 1<code> > Cada nome de amigo ter no mximo 15 letras<p> Added by: Wanderley Guimaraes Date: 2007-03-07 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2004
Tarefa
Dada a configuraao atual do sistema de transmissao de energia, descrevendo as interconexoes existentes entre as estaoes, escreva um programa que determine o estado do sistema.
Entrada
A entrada composta de vrios casos de teste. A primeira linha de um caso de teste contm dois nmeros inteiros E e L indicando respectivamente o nmero de estaoes (3 <= E <= 100) e o nmero de linhas de transmissao do sistema (E - 1 <= L <= E (E - 1)/2) que continuam em funcionamento aps o tornado. As estaoes sao identificadas por nmeros de 1 a E. Cada uma das L linhas seguintes contm dois inteiros X e Y que indicam que existe uma linha de transmissao interligando a estaao X a estaao Y. O final da entrada indicado por E = L = 0. A entrada deve ser lida do dispositivo de entrada padrao.
Sada
Para cada caso de teste seu programa deve produzir tres linhas na sada. A primeira identifica o conjunto de teste no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter a palavra "normal", se, para cada par de estaoes, houver uma rota que as conecte, e a palavra "falha" caso nao haja uma rota entre algum par de estaoes. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplos
Entrada: 6 7 1 2 2 3 3 4 4 5 5 6 6 2 1 5 4 3 1 2 4 2 1 4 0 0 Saida: Teste 1 normal Teste 2 falha
Restrioes
3 <= E <= 100 E - 1 <= L <= E (E - 1)/2
Added by: Wanderley Guimaraes Date: 2007-03-09 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2005 Programacao Nivel 2
Tarefa
Sua tarefa escrever um programa que determine o vencedor de uma partida de "vivo ou morto", a partir da informaao das ordens dadas pelo chefe e das aoes executadas pelos participantes em cada rodada.
Entrada
A entrada constituda de vrios casos de teste, cada um representando uma partida. A primeira linha de um caso de teste contm dois nmeros inteiros P e R indicando respectivamente a quantidade inicial de participantes (2 <= P <= 100) e quantidade de rodadas da partida (1 <= R <= 100). Os participantes sao identificados por nmeros de 1 a P. A segunda linha de um caso de teste descreve a fila organizada pelo chefe, contendo P nmeros inteiros distintos x1, x2, . . . xP , onde x1 representa o identificador do participante no primeiro lugar na fila, x2 representa o identificador do participante no segundo lugar na fila, e assim por diante (1 <= xi <= P). Cada uma das R linhas seguintes representa uma rodada, contendo um nmero inteiro inteiro N indicando o nmero de participantes da rodada (2 <= N <= P), um nmero inteiro inteiro J representando a ordem dada pelo chefe (0 <= J <= 1) e N nmeros inteiros Ai representando a aao do participante colocado na i-sima posiao na fila (0 <= Ai <= 1). Ordens e aoes "vivo" sao representadas pelo valor 1, ordens e aoes "morto" pelo valor zero. Cada partida tem exatamente um vencedor, determinado somente na ltima rodada fornecida no caso de teste correspondente. O final da entrada indicado por P = R = 0.
Sada
Para cada caso de teste seu programa deve produzir tres linhas. A primeira identifica o conjunto de teste no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter o identificador do vencedor. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 2 2 2 1 2 1 1 1 2 1 1 0 5 4 3 2 1 4 5 5 1 1 1 1 1 1 5 0 0 1 0 1 0 3 0 0 1 0 2 1 0 1 0 0 Sada: Teste 1 2 Teste 2 5
Restrioes
2 1 1 2 0 0 <= <= <= <= <= <= P <= 100 R <= 100 xi <= P, N <= P J <= 1 Ai <= 1, (P = 0 apenas para indicar o fim da entrada) (R = 0 apenas para indicar o fim da entrada) para 1 <= i <= P
Added by: Wanderley Guimaraes Date: 2007-03-09 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpiada Brasileira de Informatica 2005 Programacao Nivel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Tarefa
Escreva um programa que, dados o nmero de caracteres que cabem no cartao e a quantidade de frases coletadas (com os respectivos comprimentos e os nmeros de ocorrencias da palavra desculpe), determine o nmero mximo de vezes que a palavra aparece, utilizando apenas as frases colecionadas, sem repet-las.
Entrada
A entrada constituda de vrios casos de teste. A primeira linha de um caso de teste contm dois nmeros inteiros C e F indicando respectivamente o comprimento do cartao em caracteres (8 <= C <= 1000) e o nmero de frases coletadas (1 <= F <= 50). Cada uma das F linhas seguintes descreve uma frase coletada. A descriao composta por dois inteiros N e D que indicam respectivamente o nmero de caracteres na frase (8 <= N <= 200) e quantas vezes a palavra desculpe ocorre na frase (1 <= D <= 25). O final da entrada indicado por C = F = 0.
Sada
Para cada caso de teste seu programa deve produzir tres linhas na sada. A primeira identifica o conjunto de teste no formato "Teste n", onde n numerado a partir de 1. A segunda linha deve conter o mximo nmero de vezes que a palavra desculpe pode aparecer no cartao, considerando que apenas frases coletadas podem ser utilizadas, e cada frase nao utilizada mais de uma vez. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 200 4 100 4 100 1 120 2 80 5 40 3 10 1 10 1 20 2 0 0 Sada: Teste 1 9 Teste 2 4
Restrioes
8 1 8 1 <= <= <= <= C F N D <= <= <= <= 1000 (C = 0 apenas para indicar o fim da entrada) 50 (S = 0 apenas para indicar o fim da entrada) 200 25
Pyramid (Intel Pentium III 733 MHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: Olimpiada Brasileira de Informatica 2005 Programacao Nivel 2
1390. Mini-Poker
Problem code: OBIPOKER
Mini-Poker o nome de um jogo de cartas que uma simplificaao de Poker, um dos mais famosos jogos de cartas do mundo. Mini-Poker jogado com um baralho normal de 52 cartas, com quatro naipes (copas, paus, espadas e ouro), cada naipe compreendendo treze cartas (s, 2, 3, 4, 5, 6, 7, 8, 9, 10, Valete, Dama, Rei). No incio do jogo, cada jogador recebe cinco cartas. O conjunto de cinco cartas vale um certo nmero de pontos, de acordo com as regras descritas abaixo. Diferentemente do jogo de Poker normal, em Mini-Poker o naipe das cartas desconsiderado. Assim, para simplificar a descriao do jogo, vamos utilizar os nmeros de 1 a 13 para identificar as cartas do baralho, na ordem dada acima. Uma outra diferena que pode ocorrer empate entre mais de um vencedor; nesse caso os vencedores dividem o premio. As regras para pontuaao em Mini-Poker sao as seguintes: 1. Se as cinco cartas estao em seqencia a partir da carta x (ou seja, os valores das cartas sao x, x+1, x+2, x+3 e x+4), a pontuaao x+200 pontos. Por exemplo, se as cartas recebidas sao 10, 9, 8, 11 e 12, a pontuaao 208 pontos. 2. Se h quatro cartas iguais x (uma quadra, ou seja, os valores das cartas sao x, x, x, x e y), a pontuaao x+180 pontos. Por exemplo, se as cartas recebidas sao 1, 1, 1, 10 e 1, a pontuaao 181 pontos. 3. Se h tres cartas iguais x e duas outras cartas iguais y (uma trinca e um par, ou seja, os valores das cartas sao x, x, x, y e y), a pontuaao x + 160 pontos. Por exemplo, se as cartas recebidas sao 10, 4, 4, 10 e 4, a pontuaao 164 pontos. 4. Se h tres cartas iguais x e duas outras cartas diferentes y e z (uma trinca, ou seja, os valores das cartas sao x, x, x, y e z), a pontuaao x + 140 pontos. Por exemplo, se as cartas recebidas sao 2, 3, 2, 2 e 13, a pontuaao 142 pontos. 5. Se h duas cartas iguais x, duas outras cartas iguais y (x != y) e uma outra carta distinta z (dois pares, ou seja, os valores das cartas sao x, x, y, y e z), a pontuaao 3 x + 2 y + 20 pontos, em que x > y. Por exemplo, se as cartas recebidas sao 12, 7, 12, 8 e 7, a pontuaao 70 pontos. 6. Se h apenas duas cartas iguais x e as outras sao todas distintas (um par, ou seja, os valores das cartas sao x, x, y, z e t), a pontuaao x pontos. Por exemplo, se as cartas recebidas sao 12, 13, 5, 8 e 13, a pontuaao 13 pontos. 7. Se todas as cartas sao distintas, nao h pontuaao.
Tafefa
Escreva um programa que, fornecidas as cartas dadas a um jogador, calcule pontuaao do jogador naquela jogada.
Entrada
A entrada composta por vrios casos de teste, cada um correspondendo a uma jogada. A primeira linha da entrada contm um inteiro N que indica o nmero de casos de teste (1 <= N <= 100). Cada uma das N linhas seguintes contm cinco nmeros inteiros C1,C2,C3,C4 e C5, representando as cinco cartas recebidas por um jogador (1 <= C1,C2,C3,C4,C5 <= 13).
Sada
Para cada caso de teste da entrada, seu programa deve produzir tres linhas na sada. A primeira linha deve conter um identificador do caso de teste, no formato "Teste n", onde n numerado seqencialmente a partir de 1. A segunda linha deve conter a pontuaao do jogador considerando as cinco cartas recebidas. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Sada, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 2 12 3 10 3 12 1 2 3 5 4 Sada: Teste 1 62 Teste 2 201
Restrioes
1 <= N <= 100 1 <= C1,C2,C3,C4,C5 <= 13
Added by: Wanderley Guimaraes Date: 2007-03-09 Time limit: 1s Source limit:50000B Languages: All Resource: OBI 2005 Programaao Nvel 2
Tarefa
Voce deve escrever um programa que, dados o preo do litro de lcool, o preo do litro de gasolina e os quilmetros por litro que um carro bi-combustvel realiza com cada um desses combustveis, determine se mais econmico abastecer os carros da CTT com lcool ou com gasolina. No caso de nao haver diferena de custo entre abastecer com lcool ou gasolina a CTT prefere utilizar gasolina.
Entrada
A entrada composta por uma linha contendo quatro nmeros reais com precisao de duas casas decimais A, G, Ra e Rg , representando respectivamente o preo por litro do lcool, o preo por litro da gasolina, o rendimento (km/l) do carro utilizando lcool e o rendimento (km/l) do carro utilizando gasolina.
Sada
A sada deve ser composta por uma nica linha contendo o caractere A se mais econmico abastecer a frota com lcool ou o caractere G se mais econmico ou indiferente abastecer a frota com gasolina.
Exemplo 1
Entrada: 1.20 2.30 10.00 15.00 Sada: A
Exemplo 2
Entrada: 1.00 1.00 9.00 9.01 Sada: G
Exemplo 3
Entrada: 1.00 1.00 11.00 11.00 Sada: G
Restrioes
0.01 <= A <= 10.00 0.01 <= G <= 10.00 0.01 <= Ra <= 20.00
0.01 <= Rg <= 20.00 Added by: Wanderley Guimaraes Date: 2008-04-02 Time limit: 1s-10s Source limit:50000B Languages: All Resource: Olimpada Brasileira de Informtica 2005 -- Programaao Nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Um pesquisador da OBM inventou e construiu uma mquina colhedeira de minhocas, e quer test- la na fazenda. A mquina tem a largura de uma clula, e em uma passada pelo terreno de uma clula colhe todas as minhocas dessa clula, separando-as, limpando-as e empacotando-as. Ou seja, a mquina eliminara uma das etapas mais intensivas de mao de obra no processo de produao de minhocas. A mquina, porm, ainda est em desenvolvimento e tem uma restriao: nao faz curvas, podendo movimentar-se somente em linha reta. Decidiu-se entao que seria efetuado um teste com a mquina, de forma a colher o maior nmero possvel de minhocas em uma unica passada, em linha reta, de lado a lado do campo de minhocas. Ou seja, a mquina deve colher todas as minhocas de uma coluna ou de uma linha de clulas do campo de minhocas (a linha ou coluna cuja soma das produtividades esperadas das clulas a maior possvel).
Tarefa
Escreva um programa que, fornecido o mapa do campo de minhocas, descrevendo a produtividade estimada em cada clula, calcule o nmero esperado total de minhocas a serem colhidas pela mquina durante o teste, conforme descrito acima.
Entrada
A primeira linha da entrada contm dois nmeros inteiros N e M, representando respectivamente o nmero de linhas (1 <= N <= 100) e o nmero de colunas (1 <= M <= 100) de clulas existentes no campo experimental de minhocas. Cada uma das N linhas seguintes contm M inteiros, representando as produtividades estimadas das clulas correspondentes a uma linha do campo de minhocas.
Sada
A sada deve ser composta por uma unica linha contendo um inteiro, indicando o nmero esperado total de minhocas a serem colhidas pela mquina durante o teste.
Exemplo 1
Entrada: 3 4 81 28 240 10 40 10 100 240 20 180 110 35 Sada: 450
Exemplo 2
Entrada: 4 1 100 110 0 100 Sada: 310
Restrioes 1 <= N <= 100 1 <= M <= 100 0 <= Produtividade de uma clula <= 500 0 <= Produtividade de uma linha ou coluna de clulas <= 50000 Added by: Wanderley Guimares Date: 2008-04-02 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: Olimpada Brasileira de Informtica 2005 -- Programao Nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Tarefa
Voce deve escrever um programa que, dadas a configuraao da caverna e a posiao inicial de Gugo dentro da caverna, calcule qual o nmero mnimo de saloes pelos quais o duende deve passar antes de sair da caverna (nao contando o salao em que o duende est inicialmente), mas contando o salao que tem sada para o exterior).
Entrada
A caverna ser modelada como uma matriz de duas dimensoes, cujos elementos representam os saloes. Um salao que nao tem parede de cristal e que tem sada para o exterior da caverna representado pelo valor 0; um salao que nao tem parede de cristal e nao tem sada para o exterior representado pelo valor 1; um salao que tem parede de cristal representado pelo valor 2; e o salao em que o duende est inicialmente (que nao tem sada para o exterior e nem paredes de cristal) representado pelo valor 3. A figura abaixo mostra a representaao da caverna apresentada acima.
A primeira linha da entrada contm dois nmeros inteiros N e M que indicam respectivamente o nmero de linhas (1 <= N <= 10) e o nmero de colunas (1 <= M <= 10) da representaao da caverna. Cada uma das N linhas seguintes contm M nmeros inteiros Ci, descrevendo os saloes da caverna e a posiao inicial do duende (0 <= Ci <= 3). Voce pode supor que sempre h um trajeto que leva Gugo a sada da caverna.
Sada
Seu programa deve produzir uma unica linha na sada, contendo um nmero inteiro representando a quantidade mnima de saloes pelos quais Gugo deve passar antes de conseguir sair da caverna (nao contando o salao em que ele est inicialmente, mas contando o salao que tem sada para o exterior).
Exemplo 1
Entrada: 4 5 0 1 1 1 1 0 2 2 2 1 2 1 1 1 1 1 1 1 3 1 Sada: 8
Exemplo 2
Entrada: 1 10 2 0 1 1 3 1 1 1 0 1 Sada: 3
Restrioes 1 <= N <= 10 1 <= M <= 10 0 <= Ci <= 3 Added by: Wanderley Guimares Date: 2008-04-02 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: Olimpada Brasileira de Informtica 2005 -- Programao Nvel 1
2609. Trilhas
Problem code: TRILHAS
Nos finais de semana Paulo faz longas caminhadas pelas bonitas trilhas que atravessam as matas vizinhas a sua cidade. Recentemente Paulo adquiriu um aparelho de GPS (siglas do ingles Sistema de Posicionamento Global) e com ele mapeou as mais belas trilhas da regiao. Paulo programou o GPS para armazenar, a intervalos regulares, a altitude do ponto corrente durante o trajeto. Assim, aps percorrer as trilhas com o seu GPS, Paulo tem informaoes que permitem por exemplo produzir grficos como os abaixo: [IMAGE] Paulo tem uma nova namorada, e quer convence-la a passear junto com ele pelas trilhas. Para o primeiro passeio juntos, Paulo quer escolher uma trilha "fcil". Segundo o seu critrio, a trilha mais fcil a que, em um dos sentidos do percurso, exige o menor esforo de subida. O esforo exigido em um trecho de subida proporcional ao desnvel do trecho.
Tarefa
Dadas as informaoes colhidas por Paulo sobre distncias e altitudes de um conjunto de trilhas, voce deve escrever um programa que determine qual a trilha que exige o menor esforo de subida.
Entrada
A primeira linha da entrada contm um nmero inteiro N que indica o nmero de trilhas. Cada uma das N linhas seguintes contm a descriao de uma trilha (1 <= N <= 100). As trilhas sao identificadas por nmeros de 1 a N. A ordem em que as trilhas aparecem na entrada determina os seus identificadores (a primeira trilha a de nmero 1, a segunda a de nmero 2, a ltima a de nmero N). A descriao de uma trilha inicia com um nmero inteiro M que indica a quantidade de pontos de mediao da trilha (2 <= M <= 1000), seguido de M nmeros inteiros Hi representando a altura dos pontos da trilha (medidos a intervalos regulares e iguais para todas as linhas). Paulo pode percorrer a trilha em qualquer sentido (ou seja, partindo do ponto de altitude H1 em direao ao ponto de altitude HM, ou partindo do ponto de altitude HM em direao ao ponto de altitude H1).
Sada
Seu programa deve produzir uma unica linha na sada, contendo um nmero inteiro representando o identificador da melhor trilha, conforme determinado pelo seu programa. Em caso de empate entre duas ou mais trilhas, imprima a de menor identificador.
Exemplo 1
Entrada: 5 4 498 500 498 498 10 60 60 70 70 70 70 80 90 90 100 5 200 190 180 170 160 2 1000 900 4 20 20 20 20 Sada: 2
Exemplo 2
Entrada: 3 5 600 601 600 601 600 4 500 499 500 499 4 300 300 302 300 Sada: 2
Restrioes 1 <= N <= 100 2 <= M <= 1000 0 <= Hi <= 1000 Added by: Wanderley Guimaraes Date: 2008-04-02 Time limit: 1s Source limit:50000B Languages: All Resource: Olimpada Brasileira de Informtica 2005 -- Programaao Nvel 1
3773. Eleioes
Problem code: ELEICOES
O prefeito de Piraporinha do Sul foi afastado de seu cargo, devido a acusaoes de corrupao em contratos da prefeitura, e por isso foram convocadas novas eleioes para prefeito. Procurando uma renovaao poltica, a comissao eleitoral permitiu que mesmo candidatos de fora da cidade concorressem ao cargo de prefeito. Devido a essa nova regra, houve uma quantidade muito grande de candidatos a prefeitura. O software da comissao eleitoral de Piraporinha do Sul nao estava preparado para isso, e por isso voce foi contratado para escrever um programa que, dados os votos lanados pelos habitantes da cidade, decide qual candidato ganhou.
Entrada
A entrada composta de um nico caso de teste. A primeira linha contm um inteiro N representando o nmero de votos. Nas prximas N linhas, haver um inteiro X i , que representa o i-simo voto (os candidatos sao identificados por inteiros).
Sada
Para cada conjunto de teste da entrada seu programa deve produzir uma nica linha, contendo o nmero do candidato que venceu (aquele que obteve mais votos). Voce pode supor que existe apenas um vencedor.
Restrioes
1 <= N <= 100000 1 < X i <= 1000000000
Exemplo
Entrada 5 1000 1000 2588 4000 2587 Sada 1000 Entrada 4
Added by: Wanderley Guimaraes Date: 2009-01-26 Time limit: 1s Source limit:50000B Languages: All Resource: Treino para OBI de 2006 - Fbio Moreira & Daniel Fleischman
3774. Fatorial
Problem code: FATORIA2
Dado um inteiro N, determine quanto vale N fatorial (escreve-se N!). O fatorial de um nmero o produto de todos os nmeros entre 1 e N, inclusive. Por exemplo, 5! = 5 4 3 2 1 = 120.
Entrada
A entrada composta por uma nica linha que contm o inteiro N.
Sada
A sada deve consistir de apenas uma linha contendo o valor de N!.
Restrioes
0 <= N <= 12
Exemplo
Entrada 2 Sada 2 Entrada 3 Sada 6
Added by: Wanderley Guimaraes Date: 2009-01-26 Time limit: 1s Source limit:50000B Languages: All Resource: Treino para OBI de 2006 - Fbio Moreira & Daniel Fleischman
3775. Fliperama
Problem code: FLIPERAM
Bebe-bebe um jogo muito popular de fliperama. E, como a maioria dos jogos de fliperama, ele deve mostrar as maiores pontuaoes. Para esse fim, a companhia Otori te contratou. Escreva um programa que, dada a lista de todas as pontuaoes dos jogos de Bebe-bebe, mostra os melhores placares em ordem decrescente.
Entrada
A entrada composta de um nico caso de teste. A primeira linha consiste de dois inteiros N e M, dizendo quantas partidas foram jogadas de Bebe-bebe e quantas linhas cabem no mostrador de melhores rankings. As N linhas seguintes contem cada uma um inteiro indicando a pontuaao obtida em cada jogo.
Sada
Seu programa deve imprimir M linhas, contendo as M maiores pontuaoes em ordem decrescente.
Restrioes
1 <= N <= 10000 1 <= M <= 500 M <= N
Exemplo
Entrada 7 4 100 200 200 150 30 524 942 Sada 942 524 200 200 Entrada 2 1 4000
Added by: Wanderley Guimaraes Date: 2009-01-26 Time limit: 1s Source limit:50000B Languages: All Resource: Treino para OBI de 2006 - Fbio Moreira & Daniel Fleischman
Entrada
A entrada composta de um nico caso de teste. A primeira linha contm um nmero inteiro positivo N, que indica o nmero de relaoes pai-filho que serao descritas. As N linhas seguintes contem duas strings cada, P e F, indicando que P pai de F.
Sada
Seu programa deve imprimir uma nica linha contendo os nomes do par de parentes com maior grau de parentesco, e esse grau. Essas duas strings devem estar em ordem alfabtica; em caso de empate, voce pode imprimir qualquer par com essa caracterstica.
Restrioes
2 <= N <= 1000 Todos os nomes tem tamanho mximo 50.
Exemplo
Entrada 11 arnaldo daniel alfredo rafael alfredo deborah angela marcelo julio arnaldo angela elaine angela guilherme arnaldo renato marcelo beatriz julio angela julio alfredo Sada
Added by: Wanderley Guimaraes Date: 2009-01-27 Time limit: 1s Source limit:50000B Languages: All except: TCL SCALA ERL TECS JS Resource: Treino para OBI de 2006 - Fbio Moreira & Daniel Fleischman
3826. Miojo
Problem code: MIOJO
Joao um fantico por miojos; ele os adora, e, como era de se esperar, ele levou vrios pacotes quando foi acampar com seus colegas. Como Joao s gosta de miojos feitos com o tempo exato, ele se deseperou ao perceber que havia esquecido seu relgio em casa. Por sorte, ele conseguiu, no caminho, comprar duas ampulhetas de duraoes diferentes. Por exemplo, se o miojo precisa de 3 minutos para ficar pronto, e Joao tiver uma ampulheta de 5 minutos e outra de 7, uma possvel forma de cozinhar o miojo : 1. 2. 3. 4. Joao comea virando as duas ampulhetas ao mesmo tempo. Quando a areia da ampulheta de 5 minutos se esgotar, Joao torna a vir-la. Joao comea a preparar o miojo quando a areia da ampulheta de 7 minutos acabar. Joao tira o miojo do fogo quando a ampulheta de 5 minutos acabar novamente.
Dessa forma, o miojo ficar 3 minutos no fogo (do minuto 7 ao minuto 10). Assim, apesar do miojo levar apenas tres minutos para ser cozido, ele precisa de 10 minutos para ficar pronto. Faa um programa que, dado o tempo de preparo do miojo, e os tempos das duas ampulhetas (ambos maiores que o tempo do miojo), determina o tempo mnimo necessrio para o miojo ficar pronto. Voce pode supor que sempre possvel cozinhar o miojo no tempo correto.
Entrada
A entrada contm um nico caso de teste, composto por uma nica linha, que contm tres inteiros T, A e B, representando o tempo necessrio para o preparo do miojo, o tempo da primeira ampulheta e o tempo da segunda ampulheta respectivamente.
Sada
Seu programa deve produzir uma nica linha na sada, contendo o tempo mnimo para o preparo do miojo.
Restrioes
0 <= T <= 10000 T < A, B <= 40000
Exemplo
Entrada 3 5 7 Sada 10
Entrada 14 15 22 Sada 44
Added by: Wanderley Guimaraes Date: 2009-02-07 Time limit: 1s Source limit:50000B Languages: All Resource: Treino para OBI de 2006 - Fbio Moreira & Daniel Fleischman
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
3828. Primo
Problem code: PRIMO
Tarefa
Dado um inteiro N, verifique se N primo.
Entrada
A entrada composta por um nico caso de teste, composto por uma nica linha que contm o inteiro N.
Sada
Seu programa deve produzir uma nica linha, contendo a palavra "sim", se N for primo, e "nao", caso contrrio (note a ausencia de acentuaao).
Restrioes
|N| < 2 31
Exemplo
Entrada 7 Sada sim Entrada 10 Sada nao
Added by: Wanderley Guimares Date: 2009-02-07 Time limit: 1s Source limit:50000B Cluster: Pyramid (Intel Pentium III 733 MHz) Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: Treino para OBI de 2006 - Fbio Moreira & Daniel Fleischman
3829. Quadrados
Problem code: QUADRAD2
Dado um inteiro N, determine quanto vale N 2 .
Entrada
A entrada composta por um nico caso de teste, composto por uma nica linha que contm o inteiro N.
Sada
Seu programa deve produzir uma nica linha, contendo o valor de N 2 .
Restrioes
|N| <= 10000
Exemplo
Entrada 1 Sada 1 Entrada 4 Sada 16 Entrada 2 Sada 4
Added by: Wanderley Guimaraes Date: 2009-02-07 Time limit: 1s Source limit:50000B Languages: All Resource: Treino para OBI de 2006 - Fbio Moreira & Daniel Fleischman
3830. Soma
Problem code: SOMA
Dada uma lista de N inteiros, encontre a soma de todos eles.
Entrada
A entrada composta de um nico caso de teste. A primeira linha contm um inteiro positivo N. As N linhas seguintes contem cada uma um inteiro X, representando os N nmeros a serem somados.
Sada
Seu programa deve produzir uma nica linha na sada, contendo a soma de todos os N inteiros.
Restrioes
0 <= N <= 50 |X| <= 5000
Exemplo
Entrada 2 2 3 Sada 5 Entrada 3 1 5 3 Sada 9
Added by: Wanderley Guimaraes Date: 2009-02-07 Time limit: 1s Source limit:50000B Languages: All Resource: Treino para OBI de 2006 - Fbio Moreira & Daniel Fleischman
Assim, por exemplo, se o consumo foi de 120 m^3 , o valor da conta : 7 reais da assinatura bsica; 20 reais pelo consumo no intervalo 11 - 30 m^3; 140 reais pelo consumo no intervalo 31 - 100 m^3; 100 reais pelo consumo no intervalo 101 - 120 m^3. Logo o valor total da conta de gua R$ 267.
Tarefa
Escreva um programa que, dado o consumo de uma residencia em m3 , calcula o valor da conta de gua daquela residencia.
Entrada
A nica linha da entrada contm um nico inteiro N, indicando o consumo de gua da residencia, em m^3 (0 <= N <= 10^3).
Sada
Seu programa deve imprimir uma nica linha, contendo o valor da conta de gua daquela residencia.
Exemplo
Entrada 8 Sada 7 Entrada 14 Sada 11 Entrada 42 Sada 51
Added by: Wanderley Guimares Date: 2011-04-10 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 1 nvel 1
Na tabela de jogos, as dezesseis equipes finalistas sao representadas por letras maisculas (de A a P), e os jogos sao numerados de 1 a 15. Por exemplo, o jogo 3 entre as equipes identificadas por E e F; o vencedor desse jogo enfrentar o vencedor do jogo 4, e o perdedor ser eliminado. A equipe que vencer os quatro jogos da Fase final ser a campea (por exemplo, para a equipe K ser campea ela deve vencer os jogos 6, 11, 14 e 15.
Tarefa
Dados os resultados dos quinze jogos da Fase final, escreva um programa que determine a equipe campea.
Entrada
A entrada composta de quinze linhas, cada uma contendo o resultado de um jogo. A primeira linha contm o resultado do jogo de nmero 1, a segunda linha o resultado do jogo de nmero 2, e assim por diante. O resultado de um jogo representado por dois nmeros inteiros M e N separados por um espao em branco, indicando respectivamente o nmero de gols da equipe representada a esquerda e a direita na tabela de jogos (0 <= M <= 20, 0 <= N <= 20 e M != N).
Sada
Seu programa deve imprimir uma nica linha, contendo a letra identificadora da equipe campea.
Exemplo
Entrada 4 1 1 0 0 4 3 1 2 3 1 2 2 0 0 2 1 2 4 3 0 1 3 2 3 4 1 4 1 0 Sada F Entrada 2 0 1 0 2 1 1 0 1 0 1 2 1 2 1 0 2 1 1 0 0 1 0 2 2 1 1 0 2 1 Sada A
Added by: Wanderley Guimares Date: 2011-04-10 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 1 nvel 1
Tarefa
Escreva um programa que, dadas a configuraao do tabuleiro e uma sequencia de disparos feitos por um jogador, determina o nmero de navios do outro jogador que foram destrudos.
Entrada
A primeira linha da entrada contm nmeros dois inteiros N e M (1 <= N <= 100 e M <= 100) representando respectivamente o nmero de linhas e de colunas do tabuleiro. As N seguintes linhas correspondem ao tabuleiro do jogo. Cada uma dessas linhas contm M caracteres. Cada caractere indica o contedo da posiao correspondente no tabuleiro. Se esse caractere for ., essa posiao contm gua; se for #, essa posiao contm uma parte de um navio. A prxima linha contm um nmero K que o nmero de disparos feitos pelo jogador (1 <= K <= N M). As prximas K linhas indicam os disparos feitos pelo jogador. Cada linha contm dois inteiros L e C, indicando a linha e a coluna do disparo feito pelo outro jogador (1 <= L <= N e 1 <= C <= M).
Sada
Seu programa deve imprimir uma nica linha contendo um nico nmero inteiro, o nmero de navios destrudo.
Exemplo
Entrada 5 5 ..#.# #.... ...#. #.... ...#. 5 1 3 1 4 1 5 2 1 3 4 Sada 4 Entrada 5 5 ..### ..... ##### ..... #.##. 5 5 1 5 2 1 3 1 4 1 5 Sada 2 Entrada 7 7 .#....# ###..## .#....# ....#.# .#..#.# .####.# ....... 8 1 1 1 2 2 1 2 2 2 3 3 2 5 2 6 2 Sada 1
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 1 nvel 2
8777. Cometa
Problem code: COMETA2
O cometa Halley um dos cometas de menor perodo do Sistema Solar, completando uma volta em torno do Sol a cada 76 anos; na ltima ocasiao em que ele tornou-se visvel do planeta Terra, em 1986, vrias agencias espaciais enviaram sondas para coletar amostras de sua cauda e assim confirmar teorias sobre suas composioes qumicas.
Tarefa
Escreva um programa que, dado o ano atual, determina qual o prximo ano em que o cometa Halley ser visvel novamente do planeta Terra. Se o ano atual um ano de passagem do cometa, considere que o cometa j passou nesse ano (ou seja, considere sempre o prximo ano de passagem, nao considerando o ano atual).
Entrada
A nica linha da entrada contm um nico inteiro A (2010 A 10 4 ), indicando o ano atual.
Sada
Seu programa deve imprimir uma nica linha, contendo um nmero inteiro, indicando o prximo ano em que o cometa Halley ser visvel novamente do planeta Terra.
Exemplo
Entrada 2010 Sada 2062 Entrada 10000 Sada 10042 Entrada 2062 Sada 2138
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 1 nvel 2
8778. Elevador
Problem code: ELEVADO2
A Subindo Bem Confortavelmente (SBC) uma empresa tradicional, com mais de 50 anos de experiencia na fabricaao de elevadores. Todos os projetos da SBC seguem as mais estritas normas de segurana, mas infelizmente uma srie de acidentes com seus elevadores manchou a reputaao da empresa. Ao estudar os acidentes, os engenheiros da companhia concluram que, em vrios casos, o acidente foi causado pelo excesso de passageiros no elevador. Por isso, a SBC decidiu fiscalizar com mais rigor o uso de seus elevadores: foi instalado um sensor em cada porta que detecta a quantidade de pessoas que saem e entram em cada andar do elevador. A SBC tem os registros do sensor de todo um dia de funcionamento do elevador (que sempre comea vazio). Eles sabem que as pessoas sao educadas e sempre deixam todos os passageiros que irao sair em um andar sarem antes de outros passageiros entrarem no elevador, mas ainda assim eles tem tido dificuldade em decidir se a capacidade mxima do elevador foi excedida ou nao.
Tarefa
Escreva um programa que, dada uma sequencia de leituras do sensor e a capacidade mxima do elevador, determina se a capacidade mxima do elevador foi excedida em algum momento.
Entrada
A primeira linha da entrada contm dois inteiros N e C, indicando o nmero de leituras realizadas pelo sensor e a capacidade mxima do elevador, respectivamente (1 N 1000 e 1 C 1000). As N linhas seguintes contem, cada uma, uma leitura do sensor. Cada uma dessas linhas contm dois inteiros S e E, indicando quantas pessoas saram e quantas pessoas entraram naquele andar, respectivamente (0 S 1000 e 0 E 1000)
Sada
Seu programa deve imprimir uma nica linha contendo o caractere S, caso a capacidade do elevador tenha sido excedida em algum momento, ou o caractere N caso contrrio.
Exemplo
Entrada 5 10 0 5 2 7 3 3 5 2 7 0
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 1 nvel 2
8779. Reuniao
Problem code: REUNIAO2
Todos os anos, a SBC (Sociedade Brasileira de Caminhoneiros) rene seus membros em alguma cidade para discutir sobre a profissao. Nessas reunioes sao discutidos os problemas da categoria e sao apresentadas sugestoes sobre como melhorar as condioes de trabalho. O grande problema desse tipo de encontro que os membros estao espalhados pelo pas, uma vez que a profissao exige que eles viajem para diversos lugares todos os dias. Por isso, a escolha da cidade onde ser feita a reuniao sempre feita de modo que nao prejudique demais nenhum dos caminhoneiros. O critrio para tal que a maior das distncias percorridas pelos caminhoneiros para chegar ao local da reuniao deve ser a menor possvel. Ou seja, a distncia percorrida pelo caminhoneiro que vai percorrer a maior distncia entre todos os caminhoneiros para chegar a reuniao deve ser a menor possvel.
Tarefa
Dadas as cidades onde se encontram os caminhoneiros e a descriao das estradas que interligam essas cidades, escreva um programa que determina qual ser a menor distncia mxima percorrida por um caminhoneiro para chegar at o local da reuniao. Os caminhoneiros conhecem bem as estradas, e portando sempre fazem o menor caminho possvel at a cidade da reuniao. Sempre existe um caminho ligando quaisquer duas cidades.
Entrada
A primeira linha da entrada possui dois nmeros inteiros N (2 N 100) e M (N - 1 M 10000), que representam, respectivamente, o nmero de cidades e o nmero de estradas que as interligam. As cidades sao identificadas por nmeros inteiros entre 0 e N - 1. As prximas M linhas da entrada possuem, cada uma, a descriao de uma estrada. Cada descriao de entrada composta por tres nmeros inteiros: U, V e W, onde U e V representam cidades (0 U N - 1 e 0 V N - 1) e W representa o comprimento da estrada que une essas duas cidades (todas as estradas sao mao dupla, 1 W 100). sempre possvel viajar entre qualquer duas cidades com as estradas existentes, mas pode haver mais de uma estrada ligando o mesmo par de cidades .
Sada
Seu programa deve imprimir uma nica linha contendo um nmero inteiro, a distncia mxima percorrida por um caminhoneiro para ir at a reuniao, obedecidas as restrioes estabelecidas (ou seja, essa distncia mxima deve ser a menor possvel).
Exemplo
Entrada 4 4 0 1 2 0 2 4 1 3 1 2 3 5 Sada 4 Entrada 4 5 0 1 2 0 2 4 1 3 1 2 3 5 3 2 2 Sada 3 Entrada 7 12 0 1 22 0 2 30 0 5 35 1 5 11 1 6 30 1 2 25 2 3 15 2 6 10 3 4 15 3 5 10 4 5 20 5 6 33 Sada 30
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Tarefa
Dados a capacidade mxima da bomba e o nmero de baloes, indicar o nmero mnimo de testes que devem ser feitos, no pior caso, para determinar o ponto em que um balao estoura.
Entrada
A nica linha da entrada contm dois inteiros, N e K, separados por espao em branco (1 <= K <= N <= 1.000.000.000).
Sada
Seu programa deve imprimir uma nica linha, contendo um inteiro que representa o nmero mnimo de testes que devem ser feitos no pior caso para determinar o ponto em que o balao estoura.
Exemplo
Entrada 5 2 Sada 3 Entrada
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2010 - fase 2 nvel 2
8781. Floresta
Problem code: FLOREST2
O desmatamento um dos maiores problemas enfrentados pelo Brasil hoje; estima-se que mais de 10 mil km^2 de vegetaao sejam desflorestados todo ano. Alm de destruir os habitats de vrias espcies em risco de extinao, o desmatamento promove a emissao de gs carbnico, principal responsvel pelo efeito estufa e pelo aquecimento global. A Fundaao de Conservaao dos Carvalhos (FCC) tenta combater esta tendencia, promovendo o reflorestamento das regioes desmatadas. Para isso, eles pretendem plantar carvalhos formando um quadriculado (um carvalho em cada vrtice); no centro de cada quadrado formado por eles, a FCC tambm plantar um eucalipto. Para preservar a biodiversidade da rea plantada, pelo menos uma rvore de cada espcie deve ser plantada durante o reflorestamento. Por exemplo, se a FCC quiser plantar 23 rvores, ela poder faze-lo de duas maneiras: ou formando um retngulo 3 5 com os carvalhos, como na figura (a), ou formando um retngulo 2 8, como na figura (b).
Tarefa
Escreva um programa que, dado o nmero total de rvores que devem ser plantadas, de quantas maneiras diferentes elas podem ser dispostas.
Entrada
A nica linha da entrada contm um nico inteiro N, que indica o nmero total de rvores que devem ser plantadas (1 <= N <= 10 9 ) .
Sada
Seu programa deve imprimir uma nica linha, contendo um nico inteiro, indicando o nmero de arranjos distintos que podem ser feitos para o reflorestamento.
Exemplo
Entrada 23 Sada 2 Entrada 7 Sada 0 Entrada 53 Sada 3
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
8782. Matrizes
Problem code: MATRIZ2
O conglomerado indiano Tutu um conjunto de empresas que atua nos mais diversos ramos da indstria, produzindo desde sapatos at avioes e foguetes. Por ser tao diversificada, precisa de grandes e rpidos sistemas para clculos de contabilidade. Um dos mdulos mais importantes desse sistema o de fornecimento de produtos, onde fica a base de dados de produtos e fornecedores. Um mesmo produto pode ser fornecido por vrios fornecedores diferentes. A outra grande matriz a B, onde cada linha representa um dia do mes e cada coluna um produto. O valor da matriz na linha m e coluna n representa a quantidade do produto n a ser adquirido no dia m. Tal empresa tem uma poltica de fidelidade com seus fornecedores, e uma das prticas efetuadas pela empresa , em um determinado dia, comprar todos os produtos necessrios de um nico fornecedor. Isto , em um dia todos os produtos adquiridos serao comprados do fornecedor x, no outro dia do fornecedor y, e assim por diante Para auxiliar a escolha de qual fornecedor ser o escolhido no dia, foi gerada outra matriz C, que o resultado da multiplicaao das matrizes A B. Essa matriz diz o quanto ser gasto pela empresa se adquirir todos os produtos de um determinado fornecedor em um determinado dia. As matrizes A e B sao quadradas (o nmero de linhas igual ao nmero de colunas) e tem valores definidos pelas frmulas A ij = ( P i + Q j) (mod X) B ij = ( R i + S j) (mod Y) onde i o ndice da linha da matriz e j o ndice da coluna da matriz (todos os ndices vao de 1 at N). Os inteiros P, Q, R, S, X e Y sao parmetros constantes, que definem as duas matrizes A e B.
Tarefa
Escreva um programa que, dados os parmetros das matrizes A e B, e a posiao de uma das entradas as matriz C, calcula o valor daquela entrada.
Entrada
A primeira linha da entrada contm um inteiro N, indicando as dimensoes das matrizes A, B e C (2 <= N <= 10 5 ). A linha seguinte contm seis inteiros P , Q, R, S, X e Y , indicando os parmetros das matrizes A e B (2 <= X, Y <= 10 4 ; 0 <= P, Q < X; 0 <= R, S < Y ). Finalmente, a ltima linha da entrada contm dois inteiros I e J, indicando a linha e a coluna da matriz C a serem consultados (1 <= I, J <= N>).
Sada
Seu programa deve imprimir uma nica linha contendo o valor da matriz C na linha e coluna especicadas.
Exemplo
Entrada 3 4 3 2 3 5 6 2 2 Sada 18 Entrada 4 3 5 1 0 6 7 4 3 Sada 30 Entrada 2 2 2 0 1 3 2 2 1 Sada 2
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2010 - fase 2 n-vel 2
8783. Telescpio
Problem code: TELESCO2
Telescpios sao instrumentos que auxiliam a observaao do cu, melhorando e aumentando o aspecto das estrelas, planetas e outros objetos brilhantes. Existem diversos tipos de telescpios, sendo os tipos mais comuns os de lentes objetivas (refratores) e os de espelhos (refletores). A maneira como os telescpios melhoram a nossa percepao dos astros no cu aumentando a quantidade de luz captada que chega aos nossos olhos. Toda luz que entra pelos nossos olhos entra por um orifcio chamado pupila. Tal controla a quantidade de luz que entra nos olhos, aumentando o dimetro quando o ambiente est escuro (e portanto precisamos obter mais luz para identificar os objetos) e diminuindo quando o ambiente est claro. Num ambiente muito escuro, a pupila pode atingir um dimetro de 8 mm. Cada objeto celeste (estrela, planeta, nebulosa, etc) emite uma quantidade de luz (ftons) que homogeneamente distribuda quando chega na Terra. Por exemplo, a estrela A emite luz que pode ser captada a um fluxo de 40.000 ftons por segundo por milmetro quadrado. Isso , a cada segundo, possvel captar 40.000 ftons provenientes da estrela A numa rea de 1 mm. Ou seja, uma pupila de 10 mm de rea captaria 400.000 ftons provenientes da estrela A por segundo. Para que nosso crebro consiga interpretar que existe um objeto ali, porm, ele precisa receber 40.000.000 ftons por segundo. Assim, podemos utilizar um telescpio com lente (ou espelho) de 100 mm de rea, que vai captar a quantidade necessria de ftons provenientes da estrela A e encaminh-los at nossa pupila, fazendo assim com que nosso crebro perceba a presena da estrela ali.
Tarefa
Dada uma lista com estrelas no cu, o fluxo de ftons que cada uma delas emite, e rea de abertura de um telescpio, dizer quantas estrelas serao perceptveis usando tal telescpio.
Entrada
A primeira linha da entrada ter um inteiro A (1 A 10.000) representando a rea de abertura do telescpio (em milmetros quadrados) a ser considerado. A segunda linha possui um inteiro N (1 N 10.000) representando o nmero de estrelas a serem estudadas. As N linhas seguintes terao, cada uma, um inteiro F (1 F 20.000) representando o fluxo de ftons que cada uma das N estrelas emitem (em ftons por segundo por milmetro quadrado).
Sada
Imprima um inteiro representando a quantidade de estrelas que serao percebidas ao se utilizar o telescpio em questao.
Exemplo
Entrada 10000 3 4000 3500 5100
Sada 2 Entrada 5869 3 3975 14234 8569 Sada 2 Entrada 2967 9 18650 16338 2400 17702 14619 13934 7979 16316 1053 Sada 6
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 2 nvel 2
Tarefa
Dados a quantidade de smbolos do alfabeto e uma sequencia transcrita, determine quantas sequencias vlidas podem ser formadas
Entrada
A entrada composta por duas linhas. A primeira contm um nmero inteiro N (1 < N < 10 100 ) que indica a quantidade de smbolos do alfabeto. A segunda linha contm uma cadeia de dgitos de tamanho mnimo 1 e tamanho mximo 100.000 que corresponde a sequencia transcrita. .
Sada
Seu programa deve imprimir uma linha com o resto da divisao da quantidade de sequencias vlidas por 1.000.000.007.
Exemplo
Entrada 323120419 Sada 4 Entrada 324021333251231253
Added by: Wanderley Guimares Date: 2011-04-28 Time limit: 1s Source limit:50000B Languages: All except: CLOJ ERL F# GO JS PERL 6 PYTH 3.1.2 SCALA TCL Resource: OBI 2010 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
A primeira clula nao possui nenhuma mina explosiva, mas vizinha de uma clula que possui uma minaexplosiva. Nos arredores da segunda clula temos duas minas, e o mesmo acontece para a terceira e quartaclulas; a quinta clula s tem uma mina explosiva em seus arredores. A prxima figura ilustra a resposta para esse caso.
Leonardo sabe que voce participa da OBI e resolveu lhe pedir para escrever um programa de computador que,dado um tabuleiro, imprima o nmero de minas na vizinhana de cada posiao. Assim, ele poder conferir as centenas de tabuleiros que resolveu durante as frias.
Entrada
A primeira linha da entrada contm um inteiro N indicando o nmero de clulas no tabuleiro. O tabuleiro dado nas prximas N linhas. A i-sima linha seguinte contm 0 se nao existe mina na i-sima clula do tabuleiro e 1 se existe uma mina na i-sima clula do tabuleiro.
Sada
A sada composta por N linhas. A i-sima linha da sada contm o nmero de minas explosivas nos arredores da i-sima clula do tabuleiro.
Restrioes
1 <= N <= 50
Exemplos
Entrada 5 0 1 1 0 1 Sada 1 2 2 2 1 Entrada 5 0 1 1 10Sada 1 2 3 21
Added by: Wanderley Guimares Date: 2012-02-29 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel junior
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
10865. Corrida
Problem code: CORRID11
A escola de Joaozinho tradicionalmente organiza uma corrida ao redor do prdio. Como todos os alunos sao convidados a participar e eles estudam em perodos diferentes, difcil que todos corram ao mesmo tempo. Para contornar esse problema, os professores cronometram o tempo que cada aluno demora para dar cada volta ao redor da escola, e depois comparam os tempos para descobrir a classificaao final. Sua tarefa , sabendo o nmero de competidores, o nmero de voltas de que consistiu a corrida e os tempos de cada aluno competidor, descobrir quem foi o aluno vencedor, para que ele possa receber uma medalha comemorativa.
Entrada
A primeira linha da entrada contm dois inteiros N e M representando o nmero de competidores e o nmero de voltas da corrida, respectivamente. Cada uma das N linhas seguintes representa um competidor: a primeira linha representa o primeiro competidor, a segunda linha representa o segundo competidor, e assim por diante. Cada linha contm M inteiros representando os tempos em cada volta da corrida: o primeiro inteiro o tempo da primeira volta, o segundo inteiro o tempo da segunda volta, e assim por diante. Garante-se que nao houve dois competidores que gastaram o mesmo tempo para completar a corrida inteira.
Sada
A sada consiste de um nico inteiro, que corresponde ao nmero do competidor que ganhou a corrida.
Restrioes
2 <= N <= 100 1 <= M <= 100 1 <= qualquer nmero da entrada que represente o tempo de uma volta <= 10 6
Exemplos
Entrada 2 1 5 7 Sada 1 Entrada 3 3 3 5 6 1 2 3 1 1 1 Sada 3
Neste exemplo, existem tres competidores numa corrida de tres voltas. Os tempos de cada competidor em cada volta foram como na tabela a seguir.
Sendo assim, o vencedor foi o competidor 3 (com um tempo total de 3). Added by: Wanderley Guimares Date: 2012-02-29 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel junior
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
10866. Transporte
Problem code: TRANSP11
A Betalndia um pas que apenas recentemente se abriu para o comrcio exterior e est preparando agora sua primeira grande exportaao. A Sociedade Betalandesa de Comrcio (SBC) ficou encarregada de conduzir a exportaao e determinou que, seguindo os padroes internacionais, a carga ser transportada em conteineres, que sao, por sua vez, colocados em grandes navios para o transporte internacional. Todos os conteineres betalandeses sao identicos, medindo A metros de largura, B metros de comprimento e C metros de altura. Um navio porta-conteineres pode ser visto como um retngulo horizontal de X metros de largura e Y metros de comprimento, sobre o qual os conteineres sao colocados. Nenhuma parte de conteiner pode ficar para fora do navio. Alm disso, para possibilitar a travessia de pontes, a altura mxima da carga no navio nao pode ultrapassar Z metros.
Devido a limitaoes do guindaste utilizado, os conteineres s podem ser carregados alinhados com o navio. Ou seja, os conteineres s podem ser colocados sobre o navio de tal forma que a largura e o comprimento do conteiner estejam paralelos a largura e ao comprimento do navio, respectivamente. A SBC est com problemas para saber qual a quantidade mxima de conteineres que podem ser colocados no navio e pede sua ajuda. Sua tarefa, neste problema, determinar quantos conteineres podem ser carregados no navio respeitando as restrioes acima.
Entrada
A entrada consiste de duas linhas. A primeira linha contm tres inteiros A, B e C que representam as dimensoes dos conteineres, enquanto a segunda linha contm outros tres inteiros X, Y e Z que representam as dimensoes do navio.
Sada
Seu programa deve imprimir apenas uma linha contendo um inteiro que indica a quantidade mxima de conteineres que o navio consegue transportar.
Restrioes
1 <= A, B, C, X, Y, Z <= 10 6 garantido que a maior resposta ser menor ou igual a 10 6
Exemplos
Entrada 1 1 1 1 1 1 Sada 1 Entrada 1 2 5 9 6 11 Sada 54 Entrada 1 2 12 6 9 10 Sada 0
Added by: Wanderley Guimares Date: 2012-02-29 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel junior
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
10867. Calculadora
Problem code: CALCUL11
Solicitando Boas Contas (SBC) uma organizaao de inspeao de calculadoras. Todos os fabricantes procuram ter o selo de qualidade da SBC, que faz com que os clientes comprem o produto sem preocupaao com contas erradas. Voce est encarregado de testar mquinas que fazem apenas operaoes de multiplicaao e divisao. Alm disso, o termo a ser digitado em cada operaao (que dividir ou multiplicar o nmero atualmente exibido no visor) s pode conter um nico dgito. A calculadora exibe o nmero 1 quando ligada. Depois disso, o usurio pode digitar um nmero com um nico dgito e escolher se esse nmero deve multiplicar ou dividir o nmero exibido anteriormente; o resultado da operaao escolhida entao exibido na calculadora. Pode-se repetir esse processo indefinidamente. Apesar de s podermos entrar com nmeros inteiros de um dgito, o visor da calculadora permite exibir nmeros com mltiplos dgitos e at mesmo nmeros fracionrios. Dada uma sequencia de operaoes que foram realizadas nessa calculadora logo depois de ligada, sua tarefa conferir o resultado exibido.
Entrada
A primeira e nica linha da entrada contm um inteiro N. Cada uma das prximas N linhas contm um dgito e um caractere * ou /, que representam uma operaao realizada na calculadora.
Sada
Seu programa deve imprimir uma nica linha contendo o resultado que deve ser exibido pela calculadora ao final das operaoes.
Restrioes
1 <= N <= 100 000. Os nmeros informados sao inteiros entre 1 e 9. O resultado final da conta um nmero inteiro entre 1 e 2 30 .
Exemplos
Entrada 3 2 * 1 * 3 * Sada 6
O usurio deseja calcular o resultado da seguinte expressao: 1 2 1 3. Note que a primeira ocorrencia do nmero 1 vem do fato da calculadora mostrar inicialmente 1 ao invs de 0.
Entrada 3 2 / 3 / 6 * Sada 1
Added by: Wanderley Guimares Date: 2012-02-29 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel junior
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
10868. Chuva
Problem code: CHUVA11
Bob trabalha no OBM (rgao Brasileiro de Metereologia), que a organizaao responsvel pela mediao dos ndices pluviomtricos (quantidade de chuva acumulada) em todo o pas. Eles sao muito eficientes no que fazem, mas estao com um problema: eles nao sabem como proceder para calcular a quantidade acumulada de chuva que caiu em cada regiao em dois perodos consecutivos, muito embora eles saibam os dados de cada perodo separadamente. Como a chefia do rgao estava muito ocupada, acabou ficando a cargo de Bob, o estagirio, a tarefa de implementar um programa que some, para cada regiao, a quantidade de chuva acumulada em dois perodos consecutivos. O mapa que o OBM usa dividido em NN regioes, sendo que para cada regiao, a cada perodo, determinado um nmero inteiro indicando a quantidade de chuva acumulada. A quantidade de chuva acumulada total em cada regiao em dois perodos consecutivos a soma das quantidades de chuva em cada um dos perodos. Mas como Bob s um estagirio e nao est acostumado a fazer nada mais do que tirar cpias de documentos, ele pediu sua ajuda para implementar o programa que calcula a quantidade de chuva acumulada total nos dois perodos para cada uma das regioes, dadas as quantidades de chuva acumulada em cada perodo para cadaregiao.
Entrada
A primeira linha da entrada contm um inteiro N indicando a dimensao dos dois mapas que devem ser lidos. Nas prximas 2N linhas sao dados os dois mapas, cada mapa indicando a quantidade de chuva acumulada nas regioes em um perodo. Cada mapa descrito em N linhas consecutivas, cada linha contendo N inteiros, sendo que cada inteiro indica a quantidade de chuva acumulada, no perodo, em uma regiao.
Sada
A sada dever conter N linhas, com N inteiros em cada linha, indicando a quantidade de chuva acumulada total em cada uma das regioes nos dois perodos considerados.
Restrioes
1 <= N <= 100. 0 <= quantidade de chuva acumulada em cada regiao de cada mapa <= 100.
Exemplos
Entrada 2 1 2 3 4 10 11 12 13 Sada 11 13 15 17 Entrada 3 1 1 1 1 2 2 1 2 3 3 2 1 2 2 1 1 1 1 Sada 4 3 2 3 4 3 2 3 4
Added by: Wanderley Guimares Date: 2012-02-29 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel junior
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
10869. Gincana
Problem code: GINCAN11
Toda semana Juquinha tem aulas de ACM (Artes Cenicas e Musicais) no colgio em que estuda e, recentemente, sua professora anunciou que haver uma gincana no final do semestre. No entanto, os times devem ser formados o mais breve possvel para que os alunos possam ensaiar. Cada time constitudo de um ou mais alunos, e cada aluno tem que pertencer a exatamente um time. Alm disso, os times nao podem ser formados de qualquer maneira: se um aluno amigo de outro, esses alunos devem estar no mesmo time. A professora entao pediu para que os alunos a informassem das relaoes de amizade na sala de aula. Os alunos entao se numeraram de 1 at N e escreveram uma lista cujas linhas contm pares de nmeros. Se dois alunos cujos nmeros sao i e j sao amigos, haver ao menos uma linha contendo i e j ou j e i na lista. Inversamente, se h uma linha contendo i e j na lista, entao os alunos cujos nmeros sao i e j sao amigos. A professora entao recolheu a lista e, na prxima aula, dever decidir que times formar. Ela est pensando em formar o maior nmero possvel de times e gostaria de saber quantos times ela formaria. Ajude entao a professora escrevendo um programa que, dada a lista de amizades, determina qual o maior nmero de times que ela pode formar.
Entrada
A primeira linha da entrada contm dois inteiros N e M que representam, respectivamente, o nmero de alunos na turma e o nmero de linhas na lista. As prximas M linhas contem a lista de amizades. Cada linha contm dois inteiros I e J separados por exatamente um espao.
Sada
Seu programa deve imprimir uma linha contendo o nmero mximo de times que podem ser formados pela professora.
Restrioes
1 <= N <= 1000. 0 <= M <= 5000. 1 <= I, J <= N.
Exemplos
Entrada 3 1 1 3 Sada 2 Entrada 7 6 1 6 6 4 5 2 3 7 2 3 7 2 Sada 2
Added by: Wanderley Guimares Date: 2012-02-29 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel junior
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11001. Corrida
Problem code: CORR11
Todo ano, os habitantes da Mlognia, apesar das crises internas, renem-se em torno de um esporte que a paixao nacional: as corridas de carros. A Grande Corrida anual um enorme evento organizado pela Associaao de Corridas da Mlognia (ACM), sendo amplamente televisionado e reportado em jornais e revistas de todo o pas. Os resultados da corrida sao tema principal das rodas de conversa por semanas. Por bastante tempo, os resultados da Grande Corrida eram compilados manualmente. Observadores especializados iam a pista medir o tempo de cada um dos N carros, numerados de 1 a N, em cada uma das M voltas, anotando entao os resultados em tabelas para posterior anlise por parte das equipes e dos jornalistas. Muitos erros eram introduzidos nesse processo, e a organizaao decidiu informatizar todo o sistema. A ACM percebeu que o esforo necessrio para a construao do sistema seria grande, e optou por contar com a ajuda de uma equipe de programadores. Percival foi contratado para escrever a parte do software que determina quais foram os carros vencedores, mas est com dificuldades e pede sua ajuda. A sua tarefa, neste problema, determinar os tres carros melhor colocados, fornecidos os tempos que cada carro levou para completar cada volta da corrida.
Entrada
A primeira linha da entrada contm dois inteiros N e M representando o nmero de carros e o nmero de voltas da corrida, respectivamente. Cada uma das N linhas seguintes representa um carro: a primeira linha representa o primeiro carro, a segunda linha representa o segundo carro, e assim por diante. Cada linha contm M inteiros representando os tempos em cada volta da corrida: o primeiro inteiro o tempo da primeira volta, o segundo inteiro o tempo da segunda volta, e assim por diante. Garante-se que nao houve dois carros que gastaram o mesmo tempo para completar a corrida inteira.
Sada
A sada consiste de tres linhas, contendo um nico inteiro cada. A primeira linha contm o nmero do carro que ganhou a corrida, a segunda contm o nmero do segundo colocado e a terceira contm o nmero do terceiro colocado.
Restrioes
3 <= N <= 100 1 <= M <= 100 1 <= qualquer nmero da entrada que represente o tempo de uma volta <= 10 6
Exemplos
Entrada 3 1 1 2 3 Sada 1 2 3 Entrada 5 2 3 7 2 5 1 1 15 2 2 2 Sada 3 5 2
Neste exemplo, existem 5 carros numa corrida de duas voltas. Os tempos de cada carro em cada volta foram como na tabela a seguir.
Sendo assim, o vencedor foi o carro 3 (com um tempo total de 2), seguido pelo carro 5 (com um tempo total de 4) e pelo carro 2 (com um tempo total de 7). Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - Fase 1 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Entrada
A primeira linha da entrada composta por um inteiro N, o nmero de elementos da sequencia. Na segunda linha existem N inteiros a i , os elementos da sequencia.
Sada
A sada deve conter uma nica linha, indicando o nmero mnimo de partes em que Bob precisa quebrar a sequencia original para que ele termine apenas com PAs.
Restrioes
1 <= N <= 10 5 -10 5 <= a i <= 10 5
Exemplos
Entrada 5 1 2 3 4 5 Sada 1 Entrada 7 -2 0 2 3 3 4 6 Sada 3
fcil verificar que a sequencia -2, 0, 2, 3, 3, 4, 6 (do exemplo acima) nao uma PA, pois 2-0 != 3-2. Verificando manualmente, voce pode constatar que nao possvel particionar a sequencia em duas de tal forma que ambas as partes sejam PAs. Entretanto, existe uma maneira de particionar a sequencia em 3 PAs: [-2, 0, 2] [3, 3] [4, 6]. Portanto, temos que a resposta para este exemplo 3.
Entrada 4 -2 0 3 6 Sada 2
A sequencia -2, 0, 3, 6 (do exemplo acima) pode ser particionada de vrias formas. As nicas maneiras que resultam em PAs sao as seguintes: Com 4 partes temos 1 possibilidade: [-2] [0] [3] [6] Com 3 partes temos 3 possibilidades: [-2, 0] [3] [6] [-2] [0, 3] [6] [-2] [0] [3, 6] Com 2 partes temos 2 possibilidades: [-2, 0] [3, 6] [-2] [0, 3, 6]
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Entrada
A primeira linha da entrada contm dois inteiros N e M representando o nmero de pedras no rio e o nmero de sapos, respectivamente. Cada uma das M linhas seguintes possui dois inteiros P e D representando a posiao inicial de um sapo e a distncia fixa de pulo, respectivamente.
Sada
A sada contm N linhas. A i-sima linha indica a possibilidade ou nao de ter um sapo na i-sima pedra. Para as pedras que podem ter um sapo voce deve imprimir 1, e para as pedras que com certeza nao podem ter nenhum sapo voce deve imprimir 0.
Restrioes
1 <= N, M <= 100 Para cada sapo, 1 <= P, D <= N
Exemplos
Entrada 5 2 3 2 4 4 Sada 1 0 1 1 1
Neste exemplo, SBC indicou a existencia de 5 pedras no rio e 2 sapos. Os sapos estavam inicialmente nas pedras 3 e 4. SBC tambm lhe disse que o primeiro sapo da entrada sempre pula 2 metros, e o segundo sempre pula 4 metros. A figura a seguir ilustra as possveis pedras que podem ser ocupadas pelos sapos quando eles comeam a pular.
Entrada 8 3 3 3 2 2 6 2 Sada 0 1 1 1 0 1 0 1
Neste exemplo, SBC indicou a existencia de 8 pedras no rio e 3 sapos. Os sapos estavam inicialmente nas pedras 3, 2 e 6. SBC tambm lhe disse que o primeiro sapo da entrada sempre pula 3 metros, o segundo e terceiro sempre pulam 2 metros. Dessa forma, o primeiro sapo pode estar nas pedras 3 ou 6; o segundo sapo pode estar nas pedras 2, 4, 6 ou 8; e o terceiro sapo pode estar nas pedras 6, 4, 2 e 8. A figura a seguir ilustra as possveis pedras que podem ser ocupadas pelos sapos quando eles comeam a pular.
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11004. Tringulos
Problem code: TRIANG11
Caio estava brincando de construir tringulos com palitos de diferentes tamanhos. Ele fazia isso juntando aspontas de tres palitos sobre uma mesa. Ele notou que podia agrupar os tringulos formados em tres grupos: Tringulos acutngulos, que sao aqueles em que todos os ngulos internos medem menos de 90; Tringulos retngulos, que sao aqueles que possuem um ngulo interno que mede exatamente 90; Tringulos obtusngulos, que sao aqueles que possuem um ngulo interno que mede mais de 90. Ele tambm percebeu que nem sempre possvel formar um tringulo com tres palitos.
Sua tarefa , dados os comprimentos A, B e C de tres palitos, dizer se possvel formar um tringulo com esses palitos e, em caso afirmativo, dizer a qual grupo o tringulo formado pertence.
Entrada
A entrada consiste de uma nica linha, contendo tres inteiros A, B e C separados por espao.
Sada
Imprima uma linha contendo apenas uma letra minscula: n se nao for possvel formar um tringulo; a se o tringulo formado for acutngulo; r se o tringulo formado for retngulo;
Restrioes
1 <= A <= 10 4 1 <= B <= 10 4 1 <= C <= 10 4
Exemplos
Entrada 1 1 1 Sada a Entrada 1 2 1 Sada n Entrada 5 4 3 Sada r Entrada 6 3 4 Sada o
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11005. Calculadora
Problem code: CALCU11
Solicitando Boas Contas (SBC) uma organizaao de inspeao de calculadoras. Todos os fabricantes procuram ter o selo de qualidade da SBC, que faz com que os clientes comprem o produto sem preocupaao com contas erradas. Voce est encarregado de testar mquinas que fazem apenas operaoes de multiplicaao e divisao. Alm disso, o termo a ser digitado em cada operaao (que dividir ou multiplicar o nmero atualmente exibido no visor) s pode conter um nico dgito. A calculadora exibe o nmero 1 quando ligada. Depois disso, o usurio pode digitar um nmero com um nico dgito e escolher se esse nmero deve multiplicar ou dividir o nmero exibido anteriormente; o resultado da operaao escolhida entao exibido na calculadora. Pode-se repetir esse processo indefinidamente. Apesar de s podermos entrar com nmeros inteiros de um dgito, o visor da calculadora permite exibir nmeros com mltiplos dgitos e at mesmo nmeros fracionrios. Dada uma sequencia de operaoes que foram realizadas nessa calculadora logo depois de ligada, sua tarefa conferir o resultado exibido.
Entrada
A primeira e nica linha da entrada contm um inteiro N. Cada uma das prximas N linhas contm um dgito e um caractere * ou /, que representam uma operaao realizada na calculadora.
Sada
Seu programa deve imprimir uma nica linha contendo o resultado que deve ser exibido pela calculadora ao final das operaoes.
Restrioes
1 <= N <= 100 000. Os nmeros informados sao inteiros entre 1 e 9. O resultado final da conta um nmero inteiro entre 1 e 2 30 .
Exemplos
Entrada 3 2 * 1 * 3 * Sada 6
O usurio deseja calcular o resultado da seguinte expressao: 1 2 1 3. Note que a primeira ocorrencia do nmero 1 vem do fato da calculadora mostrar inicialmente 1 ao invs de 0.
Entrada 3 2 / 3 / 6 * Sada 1
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11006. Colorindo
Problem code: COLOR11
A Sociedade Brasileira das Cores (SBC) uma editora de livros de colorir. As crianas adoram os livros da SBC porque suas figuras, depois de pintadas, ficam muito coloridas e bonitas. Isso acontece porque a SBC se preocupa em nao deixar grandes regioes contnuas em suas figuras, que devem ser pintadas com uma cor s. At agora, o processo de verificar se uma figura tinha uma regiao contnua grande era completamente visual, mas a SBC resolveu automatizar esse processo e voce foi contratado para programar uma parte desse sistema. Uma figura representada por uma grade, de dimensao N por M. Cada quadrado dessa grade representado por uma coordenada (i, j), com 1 <= i <= N e 1 <= j <= M. Por exemplo, a coordenada (1, 5) representa o quadrado na primeira linha e quinta coluna, enquanto que a coordenada (3, 7) representa o quadrado na terceira linha e stima coluna. As linhas sao contadas de baixo para cima e as colunas da esquerda para a direita. Cada quadrado pode estar vazio ou cheio. Assumimos que uma criana s vai pintar sobre quadrados vazios e se ela pintar um quadrado de uma cor, ela ir pintar os oito vizinhos da mesma cor, desde que eles estejam vazios e que ela nao saia da rea da figura. Dada a figura e a coordenada onde uma criana vai comear a pintar, sua tarefa descobrir quantos quadrados ela ir pintar.
Entrada
A primeira linha da entrada contm 5 nmeros inteiros, N, M, X, Y e K. Os nmeros inteiros N e M sao respectivamente o nmero de linhas e colunas da grade, enquanto que (X, Y) a coordenada onde a criana vai comear a pintar e K o nmero de quadrados cheios na figura. Seguem-se K linhas, cada uma com dois inteiros A e B, que sao as coordenadas de um quadrado cheio. Garantimos que o quadrado na posiao (X, Y) est sempre vazio.
Sada
Seu programa deve imprimir uma linha contendo o nmero de quadrados pintados pela criana.
Restrioes
1 <= N, M <= 200. 1 <= K <= 10 000. 1 <= X, A <= N. 1 <= Y, B <= M.
Exemplos
Entrada 1 5 1 2 2 1 1 1 4 Sada 2 Entrada 5 5 3 3 7 2 2 2 3 2 4 3 2 3 4 4 2 4 3 Sada 18
Neste exemplo de caso de teste, temos uma figura de dimensoes 5 5. A criana comea a pintar na posiao (3, 3). Na figura abaixo ilustramos este caso. A posiao que a criana inicia est marcada com a letra "X", e os quadrados que a criana consegue pintar estao destacandos em cinza claro. Note que ela consegue pintar o quadrado (4, 4), pois este quadrado um dos quadrados que ela consegue pintar aps ter pintado o quadrado (3, 3).
Entrada 10 10 5 5 22 2 2 2 3 2 4 2 5 2 6 2 7 2 8 3 2
3 4 4 5 5 6 6 7 7 7 7 7 7 7
8 2 8 2 8 2 8 2 3 4 5 6 7 8
Sada 20
Neste exemplo de caso de teste, temos uma figura de dimensoes 10 10. A criana comea a pintar na posiao (5, 5). Na figura abaixo ilustramos este caso. A posiao que a criana inicia est marcada com a letra "X", e os quadrados que a criana consegue pintar estao destacandos em cinza claro.
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11007. Bal
Problem code: BALE11
Uma academia de bal ir organizar uma Oficina de Bal Intensivo (OBI) na Semana de Bal Contemporneo (SBC). Nessa academia, existem N bailarinas que praticam regularmente. O dono da academia, por ser experiente, consegue medir o nvel de habilidade de cada uma delas por um nmero inteiro; nessa mediao, nmeros maiores correspondem a danarinas mais habilidosas, e os nmeros obtidos sao todos distintos. Alm disso, ele possui uma lista das bailarinas em ordem cronolgica de ingresso na academia: As bailarinas que aparecem primeiro na lista estao h mais tempo na academia, e as que estao no final ingressaram mais recentemente. O dono da academia decidiu escolher duas das bailarinas para ajud-lo na realizaao do evento: uma ajudar no trabalho braal, enquanto a outra ir exemplificar os passos de bal. Por seu perfeccionismo, ele deseja que a bailarina que exemplificar os passos de dana seja, dentre as duas meninas do par, a mais habilidosa e a que frequenta a academia h mais tempo. Ele sabe que a Oficina ser um sucesso desde que os dois critrios mencionados acima sejam satisfeitos pela dupla de danarinas escolhidas. Com isso, ele ficou curioso para saber quantas duplas de danarinas podem ajud-lo na Oficina. A quantidade de danarinas, contudo, relativamente grande e ele nao possui nem tempo nem paciencia para fazer tal clculo. Como voces sao amigos, ele pediu a sua ajuda para contar quantas duplas sao vlidas. Voce pode ajud-lo? Por exemplo, digamos que a academia possua 5 danarinas com nveis de habilidade 1, 5, 2, 4 e 3, onde a primeira, que possui nvel "1", est na academia h mais tempo e a ltima, que possui nvel "3", est h menos. Temos, entao, 4 possveis duplas que poderemos usar nesta Oficina, que sao (5, 2),(5, 4),(5, 3) e (4, 3). Note que a dupla (1, 3), por exemplo, nao pode ser escolhida pelo dono da academia, pois a mais habilidosa dentre as duas tambm a mais nova da dupla.
Entrada
A primeira linha contm um nmero N, que representa a quantidade de danarinas que estao registradas na academia. A segunda linha da entrada contm N inteiros, onde o primeiro inteiro o nvel da danarina que est h mais tempo na academia, o segundo inteiro o nvel da prxima danarina mais antiga na academia (mas mais nova que a danarina anterior), e assim sucessivamente.
Sada
A sada consistir num nico nmero X, que representa o total de duplas de danarinas vlidas para essa Oficina, dadas as regras descritas anteriormente.
Restrioes
1 <= N <= 100 000. Todas as danarinas possuirao nveis distintos, entre 1 e 100 000. O total de pares vlidos, em todos os casos, ser <= 1 000 000.
Exemplos
Entrada 5 1 5 2 4 3 Sada 4 Entrada 9 9 8 7 6 5 4 3 1 2 Sada 35
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11008. Selos
Problem code: SELOS11
Euclides um garoto que gosta muito de colecionar selos. No seu aniversrio, seus pais o presentearam com N selos, todos em formato de quadrados com 1 cm de lado. Euclides gostaria de guardar todos os N selos que ganhou colando-os numa pgina de papel em branco. Ao decidir por guard-los assim, no entanto, ele logo percebeu que a nica forma que lhe agradava de posicionar os selos na pgina era a forma de um retngulo completamente coberto pelos mesmos, sem sobreposiao. Ele percebeu tambm que, independente do nmero de selos obtido, colocar todos os selos numa nica linha ou todos os selos numa nica coluna uma configuraao vlida. Como essa maneira usa a pgina do caderno de um jeito muito ineficiente, Euclides gostaria de saber se existe algum modo de dispor os N selos num retngulo que tenha mais de uma linha e mais de uma coluna tal que todas as linhas e colunas sejam completamente ocupadas por selos (isto , tal que nao existam posioes sem selos no interior do retngulo).
Entrada
A entrada contm uma nica linha com um nico inteiro N, o nmero de selos que Euclides ganhou.
Sada
A sada deve conter uma linha com um nico caracter, que deve ser S se for possvel organizar os selos em um retngulo com mais que uma linha e mais que uma coluna ou N caso nao seja possvel.
Restrioes
1 <= N <= 10 000 000 000.
Exemplos
Entrada 8 Sada S
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Entrada
A primeira linha da entrada possui um inteiro N indicando o nmero de redes que foram lanadas. As prximas N linhas descrevem as regioes cobertas pelas redes: cada uma contm quatro inteiros X i e X f , Y i e Y f . A regiao coberta pela rede em questao contm todo ponto (X, Y) tal que X i <= X <= X f e Y i <= Y <= Y f .
Sada
A sada deve conter apenas uma linha contendo a rea da regiao do mar realmente aproveitada pelos pescadores, ou seja, a rea total da regiao do mar coberta por pelo menos uma rede de pesca.
Restrioes
1 <= N <= 100 1 <= X i <= X f <= 100 1 <= Y i <= Y f <= 100
Exemplos
Entrada 2 1 3 1 3 2 4 2 4 Sada 7 Entrada 3 1 6 1 2 3 7 1 2 2 5 1 2 Sada 6
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Como em toda boa caa ao tesouro, o capitao nao conhece a posiao onde o tesouro se encontra: ele possui um mapa que corresponde a geografia da ilha. Em algumas posioes desse mapa, existem pistas escritas. Cada pista consiste em um nmero D, que indica a menor distncia em passos de capitao entre a posiao em que a pista se encontra e a do tesouro.
Observe que, dependendo da disposiao das pistas, a posiao do tesouro pode estar determinada de maneira nica ou nao. Na figura acima e a esquerda, as duas pistas sao suficientes para se saber, com certeza, onde est o tesouro; na figura a direita, as quatro pistas dadas ainda possibilitam que tanto a posiao (0, 2) quanto a (2, 2) guardem o tesouro. Nesse ltimo caso, nao se pode determinar, com certeza, qual a localizaao do tesouro. Dadas as pistas que o capitao possui, sua tarefa determinar se as pistas fornecem a localizaao exata do tesouro e, caso positivo, qual ela .
Entrada
A primeira linha contm dois inteiros positivos N e K, onde N a dimensao do quadriculado e K o nmero de pistas no mapa que o capitao possui. Cada uma das prximas K linhas contem tres inteiros X, Y e D, informando que existe uma pista na posiao (X, Y) contendo o nmero D. Essa pista indica que o tesouro encontra-se a D passos de capitao da posiao da pista. garantido que, com essas pistas, existe ao menos uma localizaao possvel para o tesouro. Alm disso, o mapa nao contm duas pistas na mesma posiao.
Sada
Se as pistas forem suficientes para determinar com certeza a localizaao do tesouro, seu programa deve imprimir uma nica linha com dois inteiros, X e Y , indicando que o tesouro encontra-se na posiao (X, Y). Caso contrrio, seu programa deve imprimir uma nica linha com dois inteiros iguais a -1, como nos exemplos de sada a seguir.
Restrioes
2 <= N <= 100 1 <= K <= 100
Exemplos
Entrada 4 2 0 0 3 3 0 4 Sada 1 2 Entrada 4 4 1 0 3 1 1 2 1 2 1 1 3 2 Sada -1 -1 Entrada 3 3 0 0 2 1 1 2 2 0 4 Sada 0 2
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Entrada
A primeira linha da entrada contm um inteiro N representando o nmero de cidades no mapa. Cada uma das N-1 linhas seguintes da entrada contm dois inteiros A e B indicando que existe uma estrada entre as cidades A e B.
Sada
A nica linha da sada contm um inteiro indicando a distncia entre um par de cidades mais distantes.
Restrioes
2 <= N <= 10 6 1 <= A, B <= N e A != B
Exemplos
Entrada 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 Sada 9 Entrada 5 1 2 2 3 3 4 3 5 Sada 3
A figura abaixo ilustra este exemplo, onde temos 5 cidades identificadas por 1, 2, . . . , 5. As cidades 1 e 4 estao a uma distncia de 3km, assim como as cidades 1 e 5. Nao temos nenhum par de cidades que estao a uma distncia maior que 3km. Portanto, a resposta para esse caso 3. Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s-9s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
-- Olha s, vrias somas nesse quadrado sao iguais! -- exclamou Bernardo. -- Como assim? -- devolveu, intrigado, Arnaldo. -- Observe:
-- mesmo! (-41) + 40 + 54 d 53, 28 + (-29) + 54 tambm! -- exclamou Arnaldo. -- Eu j verifiquei: existem 6 formas de escolhermos 3 clulas deste quadrado de forma que cada linha e coluna tenha exatamente uma clula escolhida. Em todas elas, a soma d 53. Alm disso, todos os nmeros sao distintos nesse quadrado. -- notou Bernardo, exibindo suas habilidades aritmticas.
-- Que bacana! Esse quadrado realmente mgico! Ou, melhor, esse quadrado realmente aritmtico! Ser que existem mais quadrados como esse? Uma escolha legal de clulas uma escolha em que toda linha e toda coluna tenha exatamente uma clula escolhida. Um quadrado aritmtico de tamanho N e soma S um tabuleiro de inteiros de N linhas e N colunas em que qualquer escolha legal tem soma S e em que todos os nmeros sao distintos. Sua tarefa, neste problema, gerar um quadrado aritmtico de tamanho N e soma S, dados N e S. Como Arnaldo e Bernardo vao querer conferir a sua soluao em suas calculadoras, voce nao deve gerar um quadrado em que alguma clula tenha valor absoluto maior do que 10 9 .
Entrada
A primeira e nica linha da entrada contm dois nmeros inteiros N e S (1 <= N <= 1000 e -1000 <= S <= 1000) representando, respectivamente, o tamanho e a soma do quadrado aritmtico pedido.
Sada
Seu programa deve imprimir N linhas, cada uma com N inteiros entre -10 9 e 10 9 , representando o quadrado aritmtico pedido. Para uma mesma entrada, podem existir vrios quadrados aritmticos vlidos; seu programa deve imprimir qualquer um deles, mas apenas um. garantido que existir pelo menos um quadrado aritmtico vlido para cada entrada testada.
Restrioes
1 <= N <= 1000 -1000 <= S <= 1000 -10 9 <= valor de cada clula <= 10 9
Exemplos
Observe que, neste problema, para uma mesma entrada, podem existir vrias sadas corretas. As sadas abaixo indicam apenas uma de vrias potenciais soluoes. Contanto que sua sada seja um quadrado aritmtico vlido segundo as condioes do enunciado, sua soluao ser considerada correta, mesmo que nao seja igual aos exemplos indicados abaixo.
Entrada 2 49 Sada 23 40 9 26 Entrada 3 53 Sada -41 -29 2 28 40 71 11 23 54 Entrada
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s-3s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Para surpresa de Arnaldo e Bernardo, os outros alunos criaram um grande nmero de quadrados, alguns enormes, e alegaram que todos eram quadrados mgicos. Arnaldo e Bernardo agora precisam de sua ajuda, para verificar se os quadrados criados sao realmente mgicos. Voce deve escrever um programa que, dado um quadrado, verifique se ele realmente mgico.
Entrada
A primeira linha da entrada contm um nico nmero inteiro N, indicando a ordem do quadrado (seu nmero de linhas). As N linhas seguintes descrevem o quadrado. Cada uma dessas linhas contm N nmeros inteiros separados por um espao em branco.
Sada
Seu programa deve imprimir uma nica linha. Caso o quadrado seja mgico, a linha deve conter o valor do quadrado (ou seja, a soma de uma de suas linhas). Caso contrrio, a linha deve conter o nmero 0.
Restrioes
3 <= N <= 1000. 1 <= valor de cada clula <= 10 9 .
Exemplos
Entrada 3 1 1 1 1 1 1 1 1 1 Sada 0 Entrada 4 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 Sada 34 Entrada 3 4 8 9 11 7 3 6 5 10 Sada 0
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11014. Expressoes
Problem code: EXPRES11
Pedrinho e Zezinho estao precisando estudar resoluao de expressoes matemticas para uma prova que irao fazer. Para isso, eles querem resolver muitos exerccios antes da prova. Como sabem programar, entao decidiram fazer um gerador de expressoes matemticas. O gerador de expressoes que eles criaram funciona em duas fases. Na primeira fase gerada uma cadeia de caracteres que contm apenas os caracteres {, [, (, }, ] e ). Na segunda fase, o gerador adiciona os nmeros e operadores na estrutura criada na primeira fase. Uma cadeia de caracteres dita bem definida (ou vlida) se atende as seguintes propriedades: 1. Ela uma cadeia de caracteres vazia (nao contm nenhum caractere). 2. Ela formada por uma cadeia bem definida envolvida por parenteses, colchetes ou chaves. Portanto, se a cadeia S bem definida, entao as cadeias (S), [S] e {S} tambm sao bem definidas. 3. Ela formada pela concatenaao de duas cadeias bem definidas. Logo, se as cadeias X e Y sao bem definidas, a cadeia XY bem definida. Depois que Pedrinho e Zezinho geraram algumas expressoes matemticas, eles perceberam que havia algum erro na primeira fase do gerador. Algumas cadeias nao eram bem definidas. Eles querem comear a resolver as expressoes o mais rpido possvel, e sabendo que voce um timo programador (e participa da OBI) resolveram pedir que escreva um programa que dadas vrias cadeias geradas na primeira fase, determine quais delas sao bem definidas e quais nao sao.
Entrada
A entrada composta por diversas instncias. A primeira linha da entrada contm um inteiro T indicando o nmero de instncias. Em seguida temos T linhas, cada uma com uma cadeia A.
Sada
Para cada instncia imprima uma linha contendo a letra S se a cadeia bem definida, ou a letra N caso contrrio.
Restrioes
1 <= T <= 20. a cadeia de caracteres A tem entre 1 e 100000 caracteres. a cadeia de caracteres A contm apenas caracteres {, [, (, }, ] e ).
Exemplos
Entrada 12 () [] {} (] }{ ([{}]) {}()[] ()] {[] ( (([{}{}()[]])(){}){} (((((((((({([])}]))))))))) Sada S S S N N S S N N N S N
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Entrada
A primeira linha da entrada contm inteiros N e M. As prximas M linhas descrevem, cada uma, uma dependencia entre as tarefas da entrada. Cada uma dessas linhas ir conter dois inteiros A e B que indicam que a tarefa B depende da tarefa A, isto , que a tarefa A deve terminar antes que a tarefa B inicie.
Sada
Se nao for possvel ordenar as tarefas de forma que as dependencias sejam satisfeitas, imprima uma nica linha contendo o caracter "*". Caso contrrio, imprima N linhas contendo cada uma um nmero inteiro. O inteiro na i-sima linha deve ser o ndice da i-sima tarefa a ser executada na ordem tima de execuao das tarefas.
Restrioes
0 <= N <= 50000. 0 <= M <= 200000. 0 <= A, B < N.
Exemplos
Entrada 3 1 2 0 Sada 1 2 0 Entrada 2 2 0 1 1 0 Sada *
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Ele sabe que voce participa da OBI e que voce adora resolver os problemas que envolvem mapas. Entao resolveu formular o seguinte problema: dado um mapa de cidades e rodovias que as ligam, selecione um subconjunto das rodovias tal que entre qualquer par de cidades exista uma rota ligando-as e a soma dos comprimentos das rodovias mnimo. Na figura abaixo e a esquerda temos um exemplo com cinco cidades e seis rodovias ligando-as. A figura abaixo e a direita ilustra uma soluao cuja soma dos comprimentos 34.
Para facilitar um pouco sua vida, Leonardo determinou que voce s precisa dizer a soma dos comprimentos das rodovias do subconjunto selecionado para um dado mapa.
Entrada
A primeira linha da entrada contm dois nmeros N e M que representam o nmero de cidades e o nmero de rodovias respectivamente. Cada uma das prximas M linhas composta por tres inteiros U, V e C que indiciam que existe uma rodovia de comprimento C que liga as cidades U e V.
Sada
A sada consiste em apenas uma linha contendo a soma do comprimento das rodovias selecionadas.
Restrioes
1 <= N <= 500. 1 <= M <= 124750. 1 <= U, V <= N e U != V . 1 <= C <= 500.
Exemplos
Entrada 5 6 1 2 15 1 3 10 2 3 1 3 4 3 2 4 5 4 5 20 Sada 34 Entrada 4 6 1 2 1 1 3 10 1 4 1 2 3 1 2 4 10 3 4 1 Sada 3
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11017. Vira!
Problem code: VIRA11
Vira! um jogo individual que se inicia com N peas igualmente espaadas em uma linha. Cada pea do Vira! possui dois lados, sendo um branco e um preto; assim, ao virar uma pea, alterna-se a cor que est sendo mostrada entre branco e preto. A figura abaixo ilustra um possvel arranjo com 5 peas, duas mostrando o lado branco e duas mostrando o lado preto.
Um movimento consiste em retirar uma pea preta - criando um espao - e inverter as peas vizinhas a retirada. Sendo assim, dependendo do nmero de peas vizinhas a retirada, um movimento pode inverter duas, uma, ou mesmo nenhuma pea (se nao houver peas vizinhas a que est sendo retirada). Voce vence o jogo quando consegue remover todas as peas. A figura abaixo exemplifica uma sequencia de movimentos que resolvem uma instncia do problema com 5 peas, em que as peas sao retiradas na ordem 5-2-1-3-4.
Para uma determinada disposiao inicial das peas, podem existir vrias soluoes diferentes. Por exemplo, poderamos retirar as peas na ordem 5-2-3-4-1 e ainda assim conseguir retirar todas as peas. Sua tarefa, neste problema, consiste em contar o nmero de soluoes diferentes para uma dada disposiao inicial das peas. Como o nmero de soluoes pode ser muito grande, voce deve imprimir apenas o resto do nmero quando dividido por 10007.
Entrada
A primeira linha da entrada contm o inteiro N. A linha seguinte contm N letras separadas por espao representando o arranjo inicial das peas. Uma pea branca indicada pela letra B na entrada, e uma pea preta indicada pela letra P.
Sada
Seu programa deve imprimir uma linha contendo o nmero de soluoes distintas que resolvem o jogo.
Restrioes
1 <= N <= 1000.
Exemplos
Entrada 5 B P B P P Sada 11 Entrada 3 B P B Sada 2
Added by: Wanderley Guimares Date: 2012-03-10 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2011 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11628. Bactrias
Problem code: BACT09
Bruno um bilogo apaixonado por sua profissao. Sua especialidade estudar o comportamento de bactrias. Por isso, ele possui em seu laboratrio centenas de colnias de diferentes tipos desses microorganismos. Nesta semana ele viu o anncio de um evento inusitado: uma feira de bactrias. Nessa feira, vrios fornecedores estarao vendendo diferentes tipos de bactrias. Cada tipo de bactria vendido em uma placa de vidro, j preparada para a formaao de uma colnia de bactrias. Cada placa de vidro vendida com apenas uma bactria inicialmente. Bruno deu uma olhada no catlogo com os tipos de bactrias que estarao a venda na feira, e notou algumas coisas interessantes: Todos os tipos de bactrias a venda terao o mesmo preo. Todas as bactrias (de todos os tipos) se subdividem todas as noites para gerar outras bactrias. Por exemplo, a bactria da colnia de tipo X se subdivide em 2 outras bactrias todas as noites. Assim, no primeiro dia teremos s uma bactria na colnia. No dia seguinte, teremos 2, e no prximo, 4. A quantidade de divisoes de uma bactria depende do seu tipo. O crescimento da colnia cessa aps um determinado nmero de dias, por causa da escassez de alimento. A quantidade de dias em que uma colnia cresce depende do tipo de bactria. final de mes e Bruno j gastou quase todo o seu dinheiro. Assim, resolveu que ir comprar apenas uma colnia de bactrias. No entanto, ele pretende comprar a colnia que fornea a maior quantidade de bactrias ao final do perodo de crescimento da mesma. Ele tem um catlogo mostrando os tipos de bactrias a venda. Para cada tipo de bactria, o catlogo informa a quantidade de bactrias geradas por uma bactria desse tipo a cada divisao e por quantos dias a populaao da colnia crescer. Porm, a calculadora que ele tem em casa nao suficiente para que ele faa os clculos necessrios para decidir qual a melhor colnia a comprar.
Tarefa
Bruno pediu sua ajuda para decidir qual o melhor tipo de bactria para a compra. Lembre que para Bruno o melhor tipo de bactria aquele cuja colnia, ao final do perodo de crescimento, ter a maior quantidade de bactrias.
Voce deve supor que nao haver duas colnias com a mesma populaao final de bactrias.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm um inteiro N (1 <= N <= 50.000) representando a quantidade tipos de bactrias no catlogo. Cada uma das N linhas seguintes contm informaoes sobre um tipo de bactria: a primeira dessas linhas contm a informaao da bactria de tipo 0, a segunda dessas linhas contm a informaao sobre a bactria de tipo 1, e assim por diante. A ltima dessas linhas contm a informaao da bactria de tipo N - 1. A informaao para cada tipo de bactria composta por dois nmeros inteiros D e C (1 <= D <= 2.000 e 1 <= C <= 5.000), onde D quantidade de bactrias que cada bactria deste tipo gera ao se dividir numa noite, e C a quantidade de dias que a populaao de bactrias crescer.
Sada
Seu programa deve imprimir, na sada padrao, um nmero inteiro entre 0 e N - 1 representando o tipo da bactria que Bruno dever comprar.
Exemplos
Entrada 2 2 5 3 4 Sada 1 Entrada 5 2 1 4 5 30 4 20 6 2 154 Sada 4 Entrada 4 145 15 2 4999 3 3211 135 20 Sada 2
Added by: Wanderley Guimares Date: 2012-05-30 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 1 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Ambos sao muito espertos e jogam de maneira tima, de forma que se existe para um deles uma sequencia de jogadas que garante a vitria independente da jogada do outro, essa pessoa jogar dessa forma.
Tarefa
Sua tarefa determinar quem vai ganhar a brincadeira, se ambos jogam de forma tima.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A entrada consiste de uma linha contendo dois inteiros N (1 <= N <= 10 6 ) e M (1 <= M <= 10 3 ), sendo N o nmero de bolinhas de chocolate e M o nmero de bolinhas permitidas por vez.
Sada
Seu programa deve imprimir, na sada padrao, uma linha, contendo o nome do vencedor, como exemplificado abaixo.
Exemplos
Entrada 5 3 Sada Paula Entrada 30 5 Sada Carlos
Added by: Wanderley Guimares Date: 2012-05-30 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 2 nvel jnior
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Observe que no final Carlos nao poderia comer 2 bolinhas para ganhar, pois seria o mesmo que Paula comeu na vez anterior. Mas Paula tambm nao pde comer a ltima bolinha, pois Carlos havia comido apenas uma na rodada anterior, assim Paula ficou sem opao de jogada e perdeu. Ambos sao muito espertos e jogam de maneira tima, de forma que se existe para um deles uma sequencia de jogadas que garante a vitria independente da jogada do outro, essa pessoa jogar dessa forma.
Tarefa
Sua tarefa determinar quem vai ganhar a brincadeira, se ambos jogam de forma tima.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A entrada consiste de uma linha contendo dois inteiros N (2 <= N <= 10 6 ) e M (2 <= M <= 10 3 ), sendo N o nmero de bolinhas de chocolate e M o nmero de bolinhas permitidas por vez.
Sada
Seu programa deve imprimir, na sada padrao, uma linha, contendo o nome do vencedor, como exemplificado abaixo.
Exemplos
Entrada 5 3 Sada Paula Entrada 20 5 Sada Carlos Entrada 5 6 Sada Paula
Added by: Wanderley Guimares Date: 2012-05-30 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 2 nvel 1 e 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Tarefa
Voce deve escrever um programa que, a partir da lista de rtulos de Aldo, calcula o nmero mximo de envelopes vlidos que ele pode enviar.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha contm dois nmeros inteiros N (1 <= N <= 1000000) e K (1 <= K <= 1000) representando respectivamente a quantidade de rtulos de balas que Aldo possui e o nmero de tipos diferentes de bala que a SBC produz. Os tipos de balas sao identificados por inteiros de 1 a K. A segunda linha contm N nmeros inteiros X i , cada um representando um rtulo de bala que Aldo possui (1 <= X i <= K, para 1 <= i <= N).
Sada
Seu programa deve imprimir, na sada padrao, o nmero mximo de envelopes vlidos que Aldo pode enviar.
Exemplos
Entrada 10 2 1 1 1 1 1 2 2 2 2 2 Sada 5 Entrada 20 5 1 2 3 4 1 2 3 4 1 2 3 4 5 1 2 3 4 5 4 4 Sada 2
Added by: Wanderley Guimares Date: 2012-05-31 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 1 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11636. O fugitivo
Problem code: FUGIT09
Demasi um terrorista e mafioso italiano que tentou escapar vindo para o Brasil. Mas Demasi nao contava com a astcia de nossa polcia, e acabou sendo preso aqui tambm. Por ser mafioso, Demasi conseguiu contratar advogados muito bons, que atravs de muitos recursos na justia, acabaram conseguindo uma liberdade condicional para ele. Nessa liberdade condicional, Demasi deve permanecer a uma certa distncia da delegacia de polcia responsvel por ele. Para monitor-lo melhor, eles instalaram nele uma coleira eletrnica inquebrvel que, minuto a minuto, envia para uma central as movimentaoes de Demasi naquele momento. A informaao da coleira enviada indicando uma direao e uma distncia. Por exemplo, em quatro minutos chegam as quatro linhas de informaao abaixo:
N O S L 30 44 22 10
Isso significa que no primeiro minuto Demasi se deslocou 30 metros para o norte (letra N), no minuto seguinte andou 44 metros para o oeste (letra O), no outro minuto andou 22 metros para o sul (letra S) e no quarto minuto se deslocou 10 metros para o leste (letra L). Para poder dar um castigo ao terrorista, o juiz decidiu que Demasi s poderia andar nas quatro direoes citadas acima. Ou seja, Demasi nunca se movimenta na direao noroeste, por exemplo. Neste problema, voce pode supor que todos os movimentos de Demasi ocorrem sobre um plano cartesiano. A polcia precisa estar sempre atenta a movimentaao dele, e pede a sua ajuda para verificar se em algum momento o italiano se desloca a uma distncia da delegacia maior do que a permitida. A distncia considerada para esta medida a distncia euclidiana.
Tarefa
Sua missao criar um programa que receba as informaoes da coleira de Demasi e diga se em algum momento Demasi esteve a uma distncia maior do que a permitida. Voce deve assumir que no instante 0 (zero) Demasi est dentro da delegacia (ou seja, a uma distncia zero).
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm dois inteiros N e M (2 <= N <= 500.000, 1 <= M <= 1.000.000) representando o nmero de registros enviados pela coleira de Demasi e a distncia mxima que ele pode ficar da delegacia, respectivamente. As N linhas seguintes contem os registros da coleira, em ordem de envio. Cada linha contm um caractere C (N, S, L ou O, como especificados acima) e um inteiro D (1 <= D <= 1.000) representando a distncia percorrida no minuto.
Sada
Seu programa deve imprimir, na sada padrao, o valor 1 se em algum momento Demasi se afastou da delegacia alm da distncia permitida, ou o valor 0 caso contrrio.
Exemplos
Entrada 5 10 N 2 L 3 S 4 O 4 O 3 Sada 0 Entrada 5 10 N 6 L 8 S 15 O 5 O 4 Sada 1
Added by: Wanderley Guimares Date: 2012-05-31 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11638. Maratona
Problem code: MARAT09
A maratona talvez a prova mais desgastante entre as modalidades olmpicas: sao quarenta e dois mil, cento e noventa e cinco metros de percurso. Por isso, os organizadores sempre posicionam vrios postos de gua ao longo do trajeto da prova, onde copos de gua sao distribudos aos competidores. Joao Saci um jovem atleta que tem boas chances de se tornar um maratonista de primeira linha. No entanto, Joao Saci descobriu que somente consegue terminar uma maratona se ingerir alguns copos de gua durante o percurso. O Laboratrio de Biomecnica da universidade local, atravs de experimentos, determinou que Joao Saci consegue percorrer exatamente mais dois mil metros aps o instante em que ingere um copo de gua. A distncia que Joao Saci consegue percorrer aps ingerir um copo de gua denominada de distncia intermediria mxima. Assim, se a distncia entre dois postos de gua consecutivos no percurso da maratona for sempre menor ou igual do que a distncia intermediria mxima de Joao Saci, ele consegue terminar a prova. Caso contrrio ele nao consegue terminar a prova. O Laboratrio de Biomecnica quer agora realizar estudos similares com outros maratonistas, que tem valor de distncias intermedirias mximas distintas, e precisa de sua ajuda.
Tarefa
Sua tarefa escrever um programa que, dada a posiao dos postos de gua ao longo do percurso, e a distncia intermediria mxima de um atleta, determine se o atleta consegue ou nao completar a prova.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm dois nmeros inteiros N e M, separados por um espao em branco, indicando respectivamente o nmero de postos de gua (2 <= N <= 10000) e a distncia intermediria mxima de um atleta, em metros (1 <= M <= 42195). A segunda linha contm N nmeros inteiros P i , separados por um espao em branco, representando a posiao dos postos de gua ao longo do trajeto da maratona. A posiao de um posto de gua dada pela distncia, em metros, do incio do percurso at o posto de gua (0 <= P i <= 42195 para 1 <= i <= N). O primeiro posto de gua est sempre localizado no ponto de partida (ou seja, P 1 = 0) e todos os postos estao em posioes distintas. Alm disso, os postos de gua sao dados na ordem crescente de sua distncia ao incio do percurso.
Note que a distncia total da prova a oficial para a maratona, ou seja, 42195 metros.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha contendo o caractere S se o atleta consegue terminar a prova, ou o caractere N caso contrrio.
Exemplos
Entrada 3 20000 0 20000 33333 Sada S Entrada 8 6000 0 6000 12000 18000 24000 32000 37000 40000 Sada N
Added by: Wanderley Guimares Date: 2012-05-31 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 2 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Como os quadrantes sao relativamente pequenos, Jorge decidiu que se dois raios caram no mesmo quadrante, pode-se considerar que caram no mesmo lugar.
Tarefa
Sua missao escrever um programa que receba as coordenadas dos raios que caram em Eletrolndia nos ltimos anos e determine se o mito estudado realmente apenas um mito ou pode ser considerado verdade.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm um nmero inteiro N (2 <= N <= 500.000) representando o nmero de registros de raios no relatrio. Cada uma das N linhas seguintes contm 2 nmeros inteiros X, Y (0 <= X, Y <= 500), representando o registro de um raio que caiu no quadrante cujas coordenadas sao (X, Y).
Sada
Seu programa deve imprimir, na sada padrao, o nmero 0 se nenhum raio caiu no mesmo lugar, ou o nmero 1 caso contrrio. Note que voce deve imprimir o nmero 1 mesmo que haja mais do que 1 par de raios que caram no mesmo lugar.
Exemplos
Entrada 5 1 1 2 3 3 3 4 2 4 4 Sada 0 Entrada 8 1 1 2 2 2 3 4 4 2 3 6 5 9 11 10 10 Sada 1
Added by: Wanderley Guimares Date: 2012-05-31 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
O problema que Rosy j deu as notas no sistema numrico, e ter que converter as notas para o sistema de letras. Porm, Rosy precisa preparar as prximas aulas (para manter a qualidade que a tornou reconhecida), e nao tem tempo suficiente para fazer a conversao das notas manualmente.
Tarefa
Voce deve escrever um programa que recebe uma nota no sistema numrico e determina o conceito correspondente.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A entrada contm uma nica linha com um nmero inteiro N (0 <= N <= 100), representando uma nota de prova no sistema numrico.
Sada
Seu programa deve imprimir, na sada padrao, uma letra (A, B, C, D, ou E em maisculas) representando o conceito correspondente a nota dada na entrada.
Exemplos
Entrada 12 Sada D Entrada 87 Sada A Entrada 0 Sada E
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11646. Olimpadas
Problem code: OLIMP09
O Comite Olmpico Internacional (COI) est visitando as cidades candidatas a sediar as Olimpadas de 2016. O Rio de Janeiro uma das cidades concorrentes, mas a competiao muito acirrada. O COI tem um conjunto de exigencias que devem ser obedecidas pelas cidades candidatas, como boas arenas para os jogos (ginsios, campos de futebol, pistas de atletismo, parque aqutico,...), bons alojamentos, um plano para o trfego de veculos durante os jogos, etc. Durante sua visita ao Rio de Janeiro, o COI colocou ainda mais uma exigencia: a demonstraao da qualidade dos sistemas de informtica. Especificamente, o COI quer que a organizaao local demonstre a sua capacidade em informtica produzindo um programa que gere a classificaao final dos pases, considerando o nmero de medalhas recebidas pelos atletas de cada pas.
Tarefa
Sua tarefa escrever um programa que, dada a informaao dos pases que receberam medalhas de ouro, prata e bronze em cada modalidade, gere a lista de classificaao dos pases na competiao. Nesta tarefa, os pases serao identificados por nmeros inteiros. O melhor colocado deve ser o pas que conseguiu o maior nmero de medalhas de ouro. Se houver empate entre pases no nmero de medalhas de ouro, o melhor colocado entre esses o pas que conseguiu o maior nmero de medalhas de prata. Se houver empate tambm no nmero de medalhas de prata, o melhor colocado entre esses o pas que recebeu o maior nmero de medalhas de bronze. Se ainda assim houver empate entre dois pases, o melhor classificado o que tem o menor nmero de identificaao.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm dois nmeros inteiros N e M, separados por um espao em branco, indicando respectivamente o nmero de pases (1 <= N <= 100) e nmero de modalidades esportivas envolvidas na competiao (1 <= M <= 100). Os pases sao identificados por nmeros inteiros de 1 a N. Cada uma das M linhas seguintes contm tres nmeros inteiros O, P e B, separados por um espao em branco, representando os pases cujos atletas receberam respectivamente medalhas de ouro (1 <= O <= N), prata (1 <= P <= N) e bronze (1 <= B <= N). Assim, se uma das M linhas contm os nmeros 3 2 1, significa que nessa modalidade a medalha de ouro foi ganha pelo pas 3, a de prata pelo pas 2 e a de bronze pelo pas 1.
Sada
Seu programa deve imprimir, na sada padrao, uma linha contendo N nmeros, separados por um espao em branco, representando os pases na ordem decrescente de classificaao (o primeiro nmero representa o pas que o primeiro colocado, o segundo nmero representa o pas que o segundo colocado, e assim por diante).
Exemplos
Entrada 2 2 2 1 2 1 2 2 Sada 2 1 Entrada 4 3 3 2 1 4 3 1 4 3 1 Sada 4 3 2 1 Entrada 3 3 3 1 2 2 3 1 1 2 3 Sada 1 2 3
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 2 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11647. Overflow
Problem code: OVERF09
Os computadores foram inventados para realizar clculos muito rapidamente, e atendem a esse requisito de maneira extraordinria. Porm, nem toda conta pode ser feita num computador, pois ele nao consegue representar todos os nmeros dentro de sua memria. Em um computador pessoal atual, por exemplo, o maior inteiro que possvel representar em sua memria 4.294.967.295. Caso alguma conta executada pelo computador de um resultado acima desse nmero, ocorrer o que chamamos de overflow, que quando o computador faz uma conta e o resultado nao pode ser representado, por ser maior do que o valor mximo permitido (em ingles overflow significa trasbordar). Por exemplo, se um computador s pode representar nmeros menores do que 1023 e mandamos ele executar a conta 1022 + 5, vai ocorrer overflow.
Tarefa
Dados o maior nmero que um computador consegue representar e uma expressao de soma ou multiplicaao entre dois inteiros, determine se ocorrer overflow.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm um inteiro N (1 <= N <= 500.000) representando o maior nmero que o computador consegue representar. A segunda linha contm um inteiro P (0 <= P <= 1000), seguido de um espao em branco, seguido de um caractere C (que pode ser + ou *, representando os operadores de adiao e multiplicaao, respectivamente), seguido de um espao em branco, seguido de um outro inteiro Q (0 <= Q <= 1000). Essa linha representa a expressao P + Q, se o caractere C for +, ou P Q, se o caractere C for *.
Sada
Seu programa deve imprimir, na sada padrao, a palavra OVERFLOW se o resultado da expressao causar um overflow, ou a palavra OK caso contrrio. Ambas as palavras devem ser escritas com letras maisculas.
Exemplos
Entrada 10 5 + 5 Sada OK Entrada 44 23 * 2 Sada OVERFLOW Entrada 323500 42 * 35 Sada OK
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 1 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Tarefa
Voce deve escrever um programa que, dados o nmero de competidores, o nmero de folhas de papel especial compradas pela Diretora e o nmero de folhas que cada competidor deve receber, determine se o nmero de folhas comprado pela Diretora suficiente.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). O arquivo de entrada contm tres nmeros inteiros C (1 <= C <= 1000), P (1 <= P <= 1000) e F (1 <= F <= 1000) representando respectivamente o nmero de competidores, a quantidade de folhas de papel especial compradas pela Diretora e a quantidade de folhas de papel especial que cada competidor deve receber.
Sada
Seu programa deve imprimir, na sada padrao, o caractere S se a quantidade de folhas compradas pela Diretora suficiente, ou o caractere N caso contrrio. Note que os caracteres devem ser letras maisculas.
Exemplos
Entrada 10 100 10 Sada S Entrada 10 90 10 Sada N Entrada 5 40 2 Sada S
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 1 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
O piso das pontes feita de tbuas de tamanhos iguais. Mas as pontes sao velhas, e algumas tbuas caram. Felizmente, todas as tbuas que sobraram estao em perfeitas condioes, ou seja, nao existe o perigo de Pedrinho pisar em uma delas e a tbua cair. Alm disso, em nenhuma das pontes duas tbuas consecutivas caram, de forma que os buracos deixados pelas tbuas que caram podem ser pulados com segurana.
No local onde Pedrinho se encontra existe uma placa mostrando as ligaoes entre as pontes e tambm quantas tbuas estao faltando em cada uma das pontes. Pedrinho est cansado e nao h muita visibilidade durante a noite. Ele precisa, portanto, tomar muito cuidado para nao cair em algum dos buracos. Pedrinho possui um laptop na mochila, mas s o usa para comunicar-se com os amigos. Ele liga sua internet via satlite, encontra voce on-line, e pede sua ajuda.
Tarefa
Sua tarefa escrever um programa que receba as informaoes sobre as pontes (as ligaoes entre elas e a quantidade de tbuas faltando em cada uma) e calcule qual o menor nmero de buracos que Pedrinho precisa pular para chegar ao outro lado do desfiladeiro.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm dois nmeros inteiros N e M (1 <= N <= 1.000, 2 <= M <= 10.000) representando o nmero de pilares no desfiladeiro e o nmero de pontes, respectivamente. Cada uma das M linhas seguintes contm 3 inteiros S, T, B (0 <= S <= N + 1, 0 <= T <= N + 1 e 0 <= B <= 1.000), indicando que existe uma ponte ligando os pilares S e T, e que possui B buracos. Nao existe linha representando ponte com S = T. O valor de pilar 0 representa a borda do desfiladeiro onde Pedrinho est, e o valor de pilar N + 1 representa a borda do desfiladeiro onde est o acampamento. Nao existem duas pontes distintas ligando o mesmo par de locais (pilares ou bordas do desfiladeiro). Voce pode supor que sempre existir um caminho de pontes entre o lado do desfiladeiro em que Pedrinho se encontra at o lado do desfiladeiro onde est o acampamento.
Sada
Seu programa deve imprimir, na sada padrao, um nmero inteiro representando a menor quantidade de buracos que Pedrinho ter que pular para conseguir chegar ao acampamento.
Exemplos
Entrada 2 5 0 1 1 0 2 3 0 3 9 1 3 2 2 3 2 Sada 3 Entrada 4 9 0 1 1 0 3 4 0 4 2 1 2 5
1 2 3 3 4
5 5 4 5 5
3 5 2 5 8
Sada 4
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 1 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11650. Simulador
Problem code: SIMUL09
Um novo processador, denominado Faska, est sendo desenvolvido para a empresa SBC. Este novo processador tem apenas duas instruoes: inversao e soma, descritas a seguir. Inversao: dados dois endereos de memria X e Y , a operaao inverte(X,Y) inverte a posiao de palavras da memria de forma que a palavra no endereo X troca de posiao com a palavra de memria da posiao Y; a palavra no endereo X + 1 troca de posiao com a palavra de memria da posiao Y - 1; a palavra no endereo X + 2 troca de posiao com a palavra de memria da posiao Y - 2; e assim por diante, at que X >= Y. Soma: dados dois endereos de memria X e Y, a operaao soma(X,Y) imprime a soma das palavras de memria entre os endereos X e Y (inclusive). Por exemplo, se a memria contm inicialmente, a partir da primeira posiao de memria (endereo igual a 1) os valores [1,2,3,4,5,6,7,8], a operaao inverte(3,7) deixa a memria igual a [1,2,7,6,5,4,3,8]. Entao, nesse estado, a execuao de soma(1,3) produz a sada 10.
Tarefa
Sua tarefa escever um programa que, dada uma sequencia de instruoes do Faska, simule a execuao e produza o mesmo resultado que o Faska produziria.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm dois nmeros inteiros N e M, representando respectivamente o nmero palavras na memria (1 <= N <= 10 9 ) e o nmero de instruoes do programa (1 <= M <= 1000). Cada uma das M linhas seguintes contm uma instruao do Faska. Cada instruao composta de um caratere descrevendo a instruao (I para inversao e S para soma), seguido de um espao, seguido de dois inteiros indicando os argumentos da instruao. Inicialmente a configuraao da memria tal que cada palavra tem como contedo o seu prprio endereo. Em outras palavras, o contedo inicial da memria [1,2,3,. . .,N]. H pelo menos uma instruao soma em cada caso de teste.
Sada
Seu programa deve imprimir, na sada padrao, uma sequencia de nmeros inteiros, um em cada linha, indicando a sada gerada pelo Faska.
Exemplos
Entrada 10 2 I 1 5 S 3 7 Sada 19 Entrada 15 4 S 2 11 I 10 15 I 1 10 S 5 10 Sada 65 21
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 2s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11651. Banda
Problem code: BANDA09
Jimmy um garoto muito esperto que adora msica. No ltimo mes ele ganhou um campeonato de um jogo cujo objetivo tocar guitarra. Empolgado, Jimmy decidiu montar uma banda. Para Jimmy a banda perfeita tem quatro integrantes, ele e mais tres: um baterista, um baixista e um cantor. Agora Jimmy precisa encontrar os outros integrantes da banda. Para isto ele reuniu todos os lbums que encontrou na internet e, aps escut-los diversas vezes, compilou o que ele chama de lista de entrosamento entre msicos. Nessa lista ele atribui, para cada par de msicos que j tocaram juntos, uma nota inteira de 1 a 100, que uma medida de quao bem os msicos tocam juntos (o nvel de entrosamento entre eles). Se dois msicos nunca tocaram juntos o nvel de entrosamento zero. Jimmy nunca tocou com nenhum msico da lista. Jimmy pretende formar a sua banda a partir da lista de entrosamento entre msicos, da seguinte maneira: ele quer escolher os outros tres msicos de tal forma que a soma dos nveis de entrosamento dos integrantes da banda seja a maior possvel (ou seja, a soma dos nveis de entrosamento dos tres pares possveis de serem formados entre os tres novos integrantes seja a maior possvel). Mas a lista de entrosamento entre msicos ficou muito grande e Jimmy nao est conseguindo escolher os integrantes. Por isso, Jimmy est pedindo sua ajuda.
Tarefa
Voce deve ajudar Jimmy a montar a melhor banda possvel fazendo um programa que receba uma lista contendo o nvel de entrosamento para cada par de msicos que j tocaram junto, e determine os msicos que formariam a melhor banda.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada formada por dois inteiros N e M, informando respectivamente o nmero de msicos (3 <= N <= 100) e o nmero de pares de msicos que j tocaram juntos (0 <= M <= 10 4 ). Os msicos sao identificados por nmeros inteiros de 1 a N. Cada uma das M linhas seguintes contm tres inteiros X, Y e Z, em que X e Y representa um par de msicos (1 <= X <= N, 1 <= Y <= N e X != Y ) e Z representa o seu nvel de entrosamento (1 <= Z <= 100). Cada par de msicos que j tocou junto aparece uma nica vez na entrada.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha, contendo tres nmeros inteiros separados por espao em branco, identificando os tres outros msicos que devem compor a banda (em qualquer ordem). Se existir mais de uma melhor banda, Jimmy contenta-se com qualquer uma.
Exemplos
Entrada 3 3 1 2 50 2 3 27 3 1 1 Sada 1 2 3 Entrada 5 8 1 2 50 1 3 50 1 4 50 2 3 50 2 5 10 3 4 50 3 5 25 4 5 20 Sada 1 3 4
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 2 nvel 1 e 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Ao final da aula, como era de se esperar, a numeraao das cadeiras ficou bem bagunada. O problema que a prxima aula de Matemtica, e o professor muito exigente, e quer comear a aula com as cadeiras perfeitamente posicionadas da maneira original.
Tarefa
Sua tarefa escrever um programa que, dada a posiao de cada cadeira ao final da aula de teatro, determine qual a menor sequencia de mudanas que devem ser executadas para retornar as cadeiras aos seus devidos lugares, considerando que cada mudana faa o intercmbio ou de duas linhas ou de duas colunas de cadeiras.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm dois nmeros inteiros L e C, representando respectivamente o nmero de linhas e o nmero de colunas de cadeiras do auditrio (1 <= L <= 200 e 1 <= C <= 200). Cada uma das L linhas seguintes contm C nmeros inteiros entre 1 e L C, separados por um espao em branco, indicando a posiao das cadeiras ao final da aula de teatro. O j-simo nmero dado na linha i o nmero da cadeira que se encontra na linha i e coluna j.
Sada
Seu programa deve imprimir, na sada padrao, na primeira linha um inteiro K representando o nmero de mudanas necessrias para retornar as cadeiras para sua posiao original. Cada uma das K linhas seguintes contm a descriao de uma mudana, na forma de um caractere M (que pode ser L ou C), seguido de um espao em branco, seguido de um inteiro X, seguido de um espao em branco, seguido de um inteiro Y. Se o caractere descrevendo a mudana L, X e Y representam linhas que devem ser intercambiadas; se o caractere descrevendo a mudana C, X e Y representam colunas que devem ser intercambiadas. Para todos os casos testes existe soluao com K <= 1000. Se mais de uma soluao existe com o mesmo nmero de mudanas, imprima qualquer uma delas.
Exemplos
Entrada 2 2 4 3 2 1 Sada 2 L 1 2 C 1 2 Entrada 3 4 1 2 3 4 5 6 7 8 9 10 11 12 Sada 0
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
11675. Olimpadas
Problem code: OLIMPJ09
O Comite Olmpico Internacional (COI) est visitando as cidades candidatas a sediar as Olimpadas de 2016. O Rio de Janeiro uma das cidades concorrentes, mas a competiao muito acirrada. O COI tem um conjunto de exigencias que devem ser obedecidas pelas cidades candidatas, como boas arenas para os jogos (ginsios, campos de futebol, pistas de atletismo, parque aqutico,...), bons alojamentos, um plano para o trfego de veculos durante os jogos, etc. Durante sua visita ao Rio de Janeiro, o COI colocou ainda mais uma exigencia: a demonstraao da qualidade dos sistemas de informtica. Especificamente, o COI quer que a organizaao local demonstre a sua capacidade em informtica produzindo um programa que gere a classificaao final dos pases, considerando o nmero total de medalhas recebidas pelos atletas de cada pas.
Tarefa
Sua tarefa escrever um programa que, dada a informaao dos pases que receberam medalhas de ouro, prata e bronze em cada modalidade, gere a lista de classificaao dos pases na competiao. Nesta tarefa, os pases serao identificados por nmeros inteiros. O melhor colocado deve ser o pas que conseguiu o maior nmero de medalhas, independentemente do tipo da medalha (ouro, prata ou bronze). Se houver empate entre dois pases no nmero total de medalhas, o melhor classificado o pas que tem o menor numero de identificaao.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm dois nmeros inteiros N e M, separados por um espao em branco, indicando respectivamente o nmero de pases (1 <= N <= 100) e nmero de modalidades esportivas envolvidas na competiao (1 <= M <= 100). Os pases sao identificados por nmeros inteiros de 1 a N. Cada uma das M linhas seguintes contm tres nmeros inteiros O, P e B, separados por um espao em branco, representando os pases cujos atletas receberam respectivamente medalhas de ouro (1 <= O <= N), prata (1 <= P <= N) e bronze (1 <= B <= N). Assim, se uma das M linhas contm os nmeros 3 2 1, significa que nessa modalidade a medalha de ouro foi ganha pelo pas 3, a de prata pelo pas 2 e a de bronze pelo pas 1.
Sada
Seu programa deve imprimir, na sada padrao, uma linha contendo N nmeros, separados por um espao em branco, representando os pases na ordem decrescente de classificaao (o primeiro nmero representa o pas que o primeiro colocado, o segundo nmero representa o pas que o segundo colocado, e assim por diante).
Exemplos
Entrada 2 2 2 1 2 1 2 2 Sada 2 1 Entrada 4 3 3 2 1 4 3 1 4 3 1 Sada 1 3 4 2 Entrada 3 3 3 1 2 2 3 1 1 2 3 Sada 1 2 3
Added by: Wanderley Guimares Date: 2012-06-03 Time limit: 1s Source limit:50000B Languages: All except: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL Resource: OBI 2009 - fase 2 nvel jnior
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
12928. Labirinto
Problem code: LAB07
Um amigo seu est muito empolgado com um novo joguinho que baixou em seu celular. O jogo consiste em uma espcie de labirinto que pode ser representado por um quadriculado de clulas quadradas com N linhas e M colunas. Cada clula do labirinto contm uma plataforma que est a uma determinada altura do chao, que pode ser representada por um inteiro a que varia de 0 (a mais baixa) a 9 (a mais alta). Voce inicia na clula (1, 1) (canto superior esquerdo) e o objetivo chegar na sada do labirinto que fica na clula (N, M) (canto inferior direito). Para sair do labirinto, voce deve fazer movimentos entre clulas adjacentes. O problema que seu bonequinho nao consegue pular muito alto, entao se a clula destino estiver duas ou mais unidades acima da sua altura atual, voce nao consegue move-lo. Mais especificamente, a cada turno voce pode mover para uma das 4 clulas adjacentes (cima, baixo, direita, esquerda) caso a altura da clula destino seja menor ou igual a altura da sua clula atual mais uma unidade. Ou seja, se a altura da sua clula for A, voce s pode mover a uma clula adjacente caso a altura dela seja menor ou igual a A + 1. Para complicar um pouco mais o jogo, a cada turno, aps o jogador realizar sua aao, cada clula aumenta em uma unidade sua altura, at o valor mximo de 9. Caso a altura de uma determinada clula seja 9, ela passa a ser 0. Note que, em um dado turno, o jogador nao obrigado a se mover, ele pode simplesmente esperar as plataformas subirem ou descerem. Alm disso, repare que nem todas as clulas tem 4 vizinhos, uma vez que nao permitido ao jogador se mover para fora dos limites do labirinto. Voce, como bom programador que , resolve escrever um programa que calcule a menor quantidade de turnos possvel para chegar a sada de um dado labirinto.
Tarefa
Escreva um programa que, dado um labirinto, retorne a menor quantidade de turnos necessria para chegar a sada, de acordo com as restrioes dadas.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm dois inteiros N e M (2 <= N, M <= 50) separados por um espao em branco, que representam, respectivamente, a quantidade de linhas e colunas do labirinto. As N linhas seguintes contem, cada uma, M inteiros que representam a altura inicial (no turno 0) da respectiva plataforma. As alturas estao sempre entre 0 e 9 (inclusive).
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha, contendo a menor quantidade de turnos possvel para sair do labirinto.
Exemplos
Entrada: 4 3 0 0 0 0 0 0 0 0 0 0 0 0 Sada: 5 Entrada: 3 3 1 2 3 4 5 6 7 8 9 Sada: 12 Entrada: 3 5 1 3 1 1 1 1 3 1 3 1 1 1 1 3 1 Sada: 10
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2007 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
12930. Pizza
Problem code: PIZZA07
Rodrigo pediu uma pizza de mussarela de N fatias, uma parte somente com cebola e o resto somente com azeitonas. Entretanto, ao receber a pizza em casa, notou que o motoqueiro que a entregou nao foi cuidadoso o suficiente, pois tanto as tiras de cebola quanto as azeitonas estavam espalhadas por toda a pizza. Para piorar, como a pizza era de mussarela, as tiras de cebola e as azeitonas estavam grudadas na pizza. Como gosta mais de cebola do que de azeitona, Rodrigo deseja pegar fatias consecutivas da pizza de tal forma que estas contenham a maior diferena possvel entre tiras de cebola e azeitonas. Para isso, ele contou quantas tiras e quantas azeitonas tinham em cada fatia e subtraiu os dois valores, nessa ordem. Assim, sempre que uma fatia contiver mais cebolas que azeitonas, ela recebe um nmero positivo, e caso contrrio, um nmero negativo. Uma fatia cujo nmero seja zero contm o mesmo nmero de tiras de cebolas e azeitonas. Por exemplo, supondo que as fatias contenham as seguintes diferenas: 5, -3, -3, 2, -1, 3, pode-se pegar uma fatia consecutiva com 9 cebolas a mais que azeitonas, utilizando as fatias com as diferenas 2, -1, 3, 5 (lembre-se de que estamos tratando de um crculo e, portanto, a fatia com diferena 5 vizinha da fatia com diferena 3 e vice-versa). Como Rodrigo nao entende de programaao, ele resolveu contar com seus servios. OBS: repare que melhor nao escolher nenhuma fatia caso somente seja possvel escolher fatias consecutivas com mais azeitonas que cebolas.
Tarefa
Escreva um programa que, dados as diferenas entre as quantidades de cebolas e azeitonas em cada fatia de pizza, retorne a maior quantidade possvel de cebolas que Rodrigo pode comer a mais do que a quantidade de azeitonas utilizando somente fatias consecutivas de pizza. (lembrando que a primeira fatia adjacente a ltima e vice-versa).
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm um inteiro N que indica o nmero de fatias de pizza (1 <= N <= 100.000). A segunda linha contm N inteiros K (-100 <= K <= 100) separados por um espao em branco com as diferenas entre as quantidades de cebolas e de azeitonas.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha, contendo a maior quantidade de cebolas que Rodrigo pode comer a mais do que azeitonas.
Exemplos
Entrada: 6 5 -3 -3 2 -1 3 Sada: 9 Entrada: 7 1 -2 2 -1 4 1 -5 Sada: 6 Entrada: 2 -3 -10 Sada: 0
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2007 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Tarefa
Escreva um programa que, dado um tabuleiro, determine a penalidade do custo otimizado.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm um inteiro N que indica o nmero de linhas e colunas do tabuleiro (1 <= N <= 1000). As N linhas seguintes contem N inteiros I cada (1 <= I <= 1000000), que representam o valor da casa do tabuleiro naquela posiao. Existe pelo menos uma soluao possvel para todos os casos de teste.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha, contendo a penalidade do custo "otimizado".
Exemplos
Entrada: 3 1 2 3 4 5 6 7 8 9 Sada: 0 Entrada: 3 5 7 6 4 0 1 3 2 5 Sada: 1 Entrada: 4 1 3 0 0 0 8 2 25 6 5 0 3 0 15 7 4 Sada: 2
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2006 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
12939. Po a metro
Problem code: PAO07
Pao a metro um tipo de sanduche gigante que uma excelente opao de lanche para torneios de programaao, embora a experiencia j tenha mostrado que o oferecimento de sanduiches pode gerar reclamaao dos competidores. Outro grande problema que algumas pessoas sao mais gulosas que outras e, dessa maneira, acabam pegando pedaos maiores que os pedaos dos outros. Para a final da OBI, a coordenaao estava pensando em providenciar pao a metro para os competidores, porm tais problemas os fizeram recuar na idia. Embora a idia tenha sido momentaneamente abandonada, uma idia simples surgiu: cortar previamente o pao em fatias de tamanho iguais e distribu-las entre as pessoas. O nico problema com tal idia que se o nmero de pessoas for muito grande, fica impraticvel ter apenas um pao. Por exemplo, se quisermos que 1.000 pessoas recebam 20 centmetros de sanduche, seria necessrio um sanduche de 20.000 centmetros, ou 200 metros! Algum levantou a seguinte hiptese: se houvessem N pessoas e fossem encomendados K sanduches de empresas diferentes, cada qual com uma determinada metragem (tamanho) Mi (1 <= i <= K), seria possvel retirar desses paes N fatias de mesmo tamanho, possivelmente sobrando partes nao utilizadas. A questao seria: qual o tamanho inteiro mximo que essas fatias poderao ter? Por exemplo, se tivermos K = 4, com os tamanhos (em centmetros) M1 = 120, M2 = 89, M3 = 230 e M4 = 177 e N = 10, podemos retirar N fatias iguais de tamanho mximo 57, pois assim conseguimos 2 fatias no primeiro pao, 1 no segundo, 4 no terceiro e 3 no quarto, totalizando as 10 fatias necessrias. Se tentarmos cortar fatias de tamanho 58, s ser possvel obter 3 fatias do terceiro pao, totalizando 9 e, portanto, 57 realmente o melhor que podemos obter. Note que nao podemos usar duas ou mais fatias menores de diferentes paes para formarmos uma fatia do tamanho selecionado. (ficaria muito deselegante dar um lanche recortado as pessoas).
Tarefa
Escreva um programa que, dados os tamanhos de pao disponveis (em centmetros) e a quantidade de pessoas a serem atendidas, retorne o tamanho inteiro mximo (em centmetros) da fatia que pode ser cortada de maneira a atender todas as pessoas.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm um inteiro N que indica a quantidade pessoas (1 <= N <= 10.000). A segunda linha contm um inteiro K (1 <= K <= 10.000) que a quantidade de sanduches disponvel. Na terceira linha h K inteiros M (1 <= M <= 10.000) separados por um espao em branco representando o tamanho de cada pao.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha, contendo o tamanho inteiro mximo da fatia que pode ser cortada.
Exemplos
Entrada: 10 4 120 89 230 177 Sada: 57 Entrada: 3 2 45 85 Sada: 42 Entrada: 7 7 100 98 99 505 102 97 101 Sada: 101
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2007 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha contm um inteiro C (1 <= C <= 10 6 ), indicando o comprimento da auto estrada, em blocos de 10 metros. A linha seguinte contem C caracteres, cada letra descrevendo um bloco de 10 metros da auto estrada, como definido acima.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha contendo um nmero inteiro, representando quantas unidades de painel sao necessrias para cobrir toda a extensao da auto estrada.
Exemplos
Entrada: 5 DAPCD Sada: 5 Entrada: 8 AACCAAPP Sada: 12 Entrada: 14 ADCCPPPPPAADCP Sada: 21
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2008 - fase 2 nvel 1, 2 e Jr.
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm quatro nmeros inteiros N, X C , Y C e R (1 <= N <= 1.000, 0 <= X C <= 1.000, 0 <= Y C <= 1.000, 1 <= R <= 1.000) indicando, respectivamente, o nmero de tiros, as duas coordenadas no plano do centro do asteride (X C , Y C ), e o raio do asteride. Em seguida haver N linhas, uma para cada tiro. Cada linha ter 4 inteiros X 1 , Y 1 , X 2 , Y 2 (0 <= X 1 , X 2 , Y 1 , Y 2 <= 1.000), representando duas coordenadas de pontos distintos da reta formada pela projeao do tiro.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha, contendo um inteiro, indicando quantos tiros atigiram o asteride.
Exemplos
Entrada: 2 10 10 5 10 1 10 3 4 11 4 10 Sada: 1
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2008 - fase 2 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
12995. Cavalos
Problem code: CAVALO08
O jogo de xadrez como conhecido hoje foi inventado por volta do sculo XV, na Europa Medieval. Uma das suas peas mais interessantes o cavalo, que se movimenta e ataca outras peas conforme a figura abaixo:
Na figura, o smbolo * representa as posioes que o cavalo na casa central ataca. Existem vrios quebra-cabeas interessantes envolvendo os movimentos do cavalo; um deles pergunta quantos cavalos podem ser colocados em um tabuleiro M N de forma que nenhum par de cavalos se ataque:
A sua tarefa escrever um programa que, dados M e N, determina quantos cavalos podem ser colocados em um tabuleiro M N de forma que nenhum par de cavalos ataque-se simultaneamente.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira (e nica) linha da entrada contm dois inteiros, M e N, (1 <= M <= 1000, 1 <= N <= 1000) indicando, respectivamente, o nmero de linhas e o nmero de colunas do tabuleiro.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha, contendo um inteiro indicando o maior nmero de cavalos que podem ser colocados no tabuleiro sem que dois deles se ataquem.
Exemplos
Entrada: 5 3 Sada: 8 Entrada: 2 6 Sada: 8 Entrada: 1 4 Sada: 4
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2008 - fase 2 nvel 1
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
12997. Chuva
Problem code: CHUVA08
A robtica causou uma grande revoluao nos processos industriais no mundo todo; atualmente, vrios tipos de robs sao usados na fabricaao de carros, equipamentos eletrnicos e at mesmo utenslios domsticos. Uma fbrica possui um rob de manutenao, que constantemente precisa ser deslocado entre setores diferentes para executar vrios servios. A movimentaao do rob feita por controle remoto: ele pode andar qualquer distncia, mas apenas nas quatro direoes cardeais (norte, sul, leste e oeste). Robs sao feitos de metal, e por isso ideal que eles evitem contato direto com a gua. Assim, em dias chuvosos, ideal que a trajetria do rob passe por dentro de galpoes, debaixo de marquises e toldos, etc. para evitar sua exposiao a chuva. A sua tarefa escrever um programa que, dadas as informaoes sobre as reas cobertas e ponto inicial e final do rob, determine uma trajetria para o rob que minimize a porao do trajeto feita sob chuva.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha da entrada contm quatro inteiros X i , Y i , X f e Y f (0 <= X i , Y i , X f , Y f <= 10 6 ), indicando, respectivamente, a posiao atual e a posiao final do rob -- o rob comea na posiao (X i , Y i ) e deve terminar na posiao (X f , Y f ). A linha seguinte da entrada contm um nico inteiro N (0 <= N <= 1000), indicando o nmero de reas cobertas na fbrica. Cada uma das N linhas seguintes contm quatro inteiros X 1 , Y 1 , X 2 e Y 2 (0 <= X 1 < X 2 <= 10 6 , 0 <= Y 1 < Y 2 <= 10 6 ), indicando uma regiao coberta. Uma regiao coberta um retngulo de lados paralelos aos eixos tal que (X 1 , Y 1 ) e (X 2 , Y 2 ) sao vrtices opostos do retngulo. Duas reas cobertas podem ter regioes comuns. O rob pode entrar e sair de uma rea coberta por qualquer ponto de seu permetro, e pode trafegar livremente dentro da rea coberta.
Sada
Seu programa deve imprimir, na sada padrao, uma nica linha, contendo um nmero inteiro indicando a menor distncia que o rob precisa percorrer sob chuva.
Exemplos
Entrada: 0 0 4 3 0 Sada: 7 Entrada: 2 5 5 0 1 0 0 1 5 Sada: 5 Entrada: 4 5 5 0 2 0 0 1 5 0 0 3 2 Sada: 5
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2008 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
12998. Ortografia
Problem code: ORTOG08
Um servio de busca na Internet est preocupado com a crescente taxa de erros de ortografia de seus usurios, tornando mais difceis as buscas por palavras chaves, que constantemente contem erros de algumas letras, devidos a m digitaao ou m ortografia. O servio funciona com base num dicionrio de palavras. O usurio deve inserir uma palavra num campo de um formulrio; o servio entao procura esta palavra no dicionrio e retorna contedo que tenha relaao com a palavra. Para contornar o problema de ortografia, voce foi contratado para fazer um programa que tenta adivinhar qual palavra o usurio pretendia procurar, independente de haver erros de ortografia nela. Para este problema vamos definir a distncia entre duas palavras A e B como sendo o nmero de operaoes, descritas abaixo, necessrias para transformar A em B: 1. Retirar uma letra de A. 2. Adicionar uma letra a A, em qualquer posiao. 3. Trocar qualquer letra de A por outra letra, na mesma posiao. O servio de busca definiu que a palavra P fornecida pelo usurio pode se referir a uma palavra D do dicionrio se est a uma distncia de no mximo 2 de D. Exemplos: A palavra tu pode se referir a palavra do dicionrio tubo, realizando duas vezes a operaao 2. A palavra crto pode se referir a palavra do dicionrio corte, realizando uma vez a operaao 2 e uma vez a operaao 3. A palavra crto pode se referir a palavra do dicionrio curto, realizando uma vez a operaao 2. A palavra hortgrafea nao pode se referir a palavra do dicionrio ortografia. Voce deve escrever um programa que, dado um dicionrio de palavras, descubra para cada palavra fornecida pelo usurio a quais palavras do dicionrio ela pode se referir, nas condioes descritas acima.
Entrada
A entrada contm um nico conjunto de testes, que deve ser lido do dispositivo de entrada padrao (normalmente o teclado). A primeira linha contm 2 inteiros N, M, representando respectivamente o nmero de palavras contidas no dicionrio (1 <= N <= 1000) e o nmero de palavras a serem analisadas (1 <= M <= 100). Cada uma das N linhas seguintes conter uma palavra pertencente ao
dicionrio. Cada uma das M linhas seguintes conter uma palavra a ser analisada, fornecida pelo usurio. Cada palavra pode ter de 1 a 20 letras, contendo apenas letras de a a z, minsculas.
Sada
Seu programa deve imprimir, na sada padrao, M linhas, sendo uma linha para cada palavra fornecido pelo usurio. Cada linha deve conter todas palavras do dicionrio as quais a palavra fornecida pode se referir. No caso de haver mais de uma palavra em uma linha da resposta, elas devem ser separadas por um espao em branco, aparecendo na ordem que elas foram dadas na entrada, como pode ser visto no exemplo de sada abaixo. No caso de nao haver nenhuma palavra em uma linha da resposta, deixe-a em branco.
Exemplo
Entrada: 3 3 pato pateta caneca pat ccanecos pata Sada: pato pato pateta
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2008 - fase 2 nvel 2
(function() { var po = document.createElement(script); po.type = text/javascript; po.async = true; po.src = https://apis.google.com/js/plusone.js; var s = document.getElementsByTagName(script)[0]; s.parentNode.insertBefore(po, s); })();
Os crculos representam as colnias, e as conexoes entre elas representam as estradas existentes. O nmero nas conexoes representa o preo de uma viagem de nibus-flutuador em qualquer direao. Ou seja, uma viagem da colnia A direto para a colnia C (ou de C para A), custa 5 moedas de silcio, nao importa o nmero de passageiros. Suponha que o grande encontro seja na colnia A. Se o chefe da famlia pagar o frete de B para A, de C para A e de D para A, vai acabar gastando 25 moedas. Mas uma coisa que poderia ser feita, tambm, : os Silvas das colnias B e D vao para a C. Da C, todos vao para a colnia A. Isso tudo teria um gasto de somente 10 moedas. Este ano o nmero de colnias dos Silvas aumentou muito em Marte, e o chefe da famlia est muito preocupado com o dinheiro que vai gastar para pagar todas as viagens. Entao ele contratou voce, que o melhor programador daquele planeta, a fazer um programa que recebe as informaoes a respeito das colnias, das estradas e dos fretes de nibus-flutuadores, e determine qual a menor quantidade de dinheiro necessria para custear o transporte de todos os Silvas para o encontro. O desespero do chefe da famlia tanto que ele nao se importa em qual colnia ser o encontro, desde que os custos sejam minimizados. Voce pode assumir que: Entre duas colnias diferentes existe no mximo uma estrada direta. Sempre existe um caminho (de uma ou mais estradas) entre quaisquer duas colnias.
Entrada
A entrada contm um nico teste, a ser lido da entrada padrao. A primeira linha contm dois inteiros: N e M (2 <= N <= 1000, 1 <= M <= 10.000), que representam, respectivamente, o nmero de colnias e o nmero de estradas existentes. Depois, seguem M linhas com 3 inteiros: P, Q e U (0 <= P, Q <= N - 1, 1 <= U <= 1000), indicando que existe uma estrada de mao dupla entre as colnias P e Q, cujo custo do frete de viagem entre essas duas colnias U moedas.
Sada
Seu programa deve imprimir, na sada padrao, um nico inteiro, representando o nmero mnimo de moedas necessrias para custear o transporte de todos os Silvas a colnia onde ser realizada o encontro.
Exemplos
Entradas: 4 6 0 1 10 0 2 5 0 3 10 1 2 3 1 3 4 2 3 2 Sada: 10
Entradas: 4 6 0 1 1 0 2 1 0 3 1 1 2 3 1 3 4 2 3 2 Sada: 3
Cube (Intel Pentium G860 3GHz) All except: AWK CLOJ ERL F# GO JS NODEJS PERL 6 PYTH 3.2.3 n SCALA SED Languages: TCL Resource: OBI 2008 - fase 2 nvel 2