Sie sind auf Seite 1von 10

OBI2012 Caderno de Tarefas

Modalidade Programao Nvel 2, Fase 1


31 de maro de 2012 A PROVA TEM DURAO DE 5 HORAS

Promoo:

Patrocnio:

v1.0

Olimpada Brasileira de Informtica OBI2012

Instrues
LEIA ATENTAMENTE ESTAS INSTRUES ANTES DE INICIAR A PROVA
Este caderno de tarefas composto por 9 pginas (no contando a folha de rosto), numeradas de 1 a 9. Verique se o caderno est completo. A prova deve ser feita individualmente. proibido consultar a Internet, livros, anotaes ou qualquer outro material durante a prova. permitida a consulta ao help do ambiente de programao se este estiver disponvel. As tarefas tm o mesmo valor na correo. A correo automatizada, portanto siga atentamente as exigncias da tarefa quanto ao formato da entrada e sada de seu programa. No implemente nenhum recurso grco nas suas solues (janelas, menus, etc.), nem utilize qualquer rotina para limpar a tela ou posicionar o cursor. As tarefas no esto ordenadas, neste caderno, por ordem de diculdade; procure resolver primeiro as questes mais fceis. Preste muita ateno no nome dos arquivos fonte indicados nas tarefas. Solues na linguagem C devem ser arquivos com suxo .c; solues na linguagem C++ devem ser arquivos com suxo .cc ou .cpp; solues na linguagem Pascal devem ser arquivos com suxo .pas; solues na linguagem Java devem ser arquivos com suxo .java e a classe principal deve ter o mesmo nome do arquivo fonte; e solues na linguagem Python devem ser arquivos com suxo .py. Para problemas diferentes voc pode escolher trabalhar com linguagens diferentes, mas apenas uma soluo, em uma nica linguagem, deve ser submetida para cada problema. Ao nal da prova, para cada soluo que voc queira submeter para correo, copie o arquivo fonte para o seu diretrio de trabalho ou disquete, conforme especicado pelo seu professor. No utilize arquivos para entrada ou sada. Todos os dados devem ser lidos da entrada padro (normalmente o teclado) e escritos na sada padro (normalmente a tela). Utilize as funes padro para entrada e sada de dados: em Pascal: readln, read, writeln, write; em C: scanf, getchar, printf, putchar ; em C++: as mesmas de C ou os objetos cout e cin. em Java: qualquer classe ou funo padro, como por exemplo Scanner, BueredReader, BueredWriter e System.out.println em Python: read,readline,readlines,print,write Procure resolver o problema de maneira eciente. Na correo, ecincia tambm ser levada em conta. As solues sero testadas com outras entradas alm das apresentadas como exemplo nas tarefas.

Olimpada Brasileira de Informtica OBI2012

Colcho
Nome do arquivo fonte: colchao.c, colchao.cpp, colchao.pas, colchao.java, ou colchao.py Joo est comprando mveis novos para sua casa. Agora a vez de comprar um colcho novo, de molas, para substituir o colcho velho. As portas de sua casa tm altura H e largura L e existe um colcho que est em promoo com dimenses A B C. O colcho tem a forma de um paraleleppedo reto retngulo e Joo s consegue arrast-lo atravs de uma porta com uma de suas faces paralelas ao cho, mas consegue virar e rotacionar o colcho antes de passar pela porta. Entretanto, de nada adianta ele comprar o colcho se ele no passar atravs das portas de sua casa. Portanto ele quer saber se consegue passar o colcho pelas portas e para isso precisa de sua ajuda.

Entrada
A primeira linha da entrada contm trs nmeros inteiros A, B e C, as trs dimenses do colcho, em centmetros. A segunda linha contm dois inteiros H e L, respectivamente a altura e a largura das portas em centmetros.

Sada
Se programa deve escrever uma nica linha, contendo apenas a letra S se o colcho passa pelas portas e apenas a letra N em caso contrrio.

Restries
1 A, B, C 300 1 H, L 250

Olimpada Brasileira de Informtica OBI2012

Exemplos
Entrada 25 120 220 200 100 Sada S

Entrada 25 205 220 200 100

Sada N

Entrada 25 200 220 200 100

Sada S

Olimpada Brasileira de Informtica OBI2012

O Tabuleiro Esburacado
Nome do arquivo fonte: cavalo.c, cavalo.cpp, cavalo.pas, cavalo.java, ou cavalo.py Um tabuleiro normal, 8 x 8, foi danicado, e 4 posies caram esburacadas. A Figura 1(a) mostra o tabuleiro. A posio inferior esquerda tem coordenadas (0, 0). Os 4 buracos esto marcados em preto, e tm coordenadas (1, 3), (2, 3), (2, 5) e (5, 4). Um cavalo de xadrez foi colocado na posio (4, 3), marcada como 0 no tabuleiro.

8 7

1 2

0
0

6 5
(a) (b)

3 4

Os 8 movimentos de um cavalo esto numerados de 1 a 8 na Figura 1(b), a partir da posio marcada como 0. Por exemplo, se o cavalo estiver na posio inicial (4, 3), o movimento 7 leva o cavalo posio (2, 4), sem cair no buraco (2, 3), porque o cavalo salta da posio (4, 3) para a posio (2, 4). Seu problema simular um passeio do cavalo, dados os movimentos atravs dos nmeros de 1 a 8 e determinar quantos movimentos o cavalo faz at ou (i) terminar o passeio ou (ii) cair em um buraco. Por exemplo, na trajetria dada pelos 5 movimentos 1, 8, 5, 3, 4, o cavalo passa pelas posies (5, 5), (4, 7), (3, 5) e cai no buraco (5, 4), fazendo portanto apenas 4 movimentos. J no passeio dado pelos 3 movimentos 6, 8, 1, o cavalo passa pelas posies (2, 2), (1, 4) e (2, 6) e no cai em nenhum buraco: portanto, perfaz todos os 3 movimentos do passeio.

Entrada
A primeira linha da entrada contm N , o nmero de movimentos do passeio. A segunda linha contm N inteiros M1 , M2 , . . . , MN , separados por um espao em branco, correspondentes aos N movimentos do cavalo no passeio. Um movimento pode levar o cavalo a cair em um buraco, mas nunca leva o cavalo a sair do tabuleiro.

Sada
Seu programa deve imprimir uma nica linha, contendo um nico nmero inteiro, o nmero de movimentos do cavalo at terminar o passeio ou o cavalo cair em um buraco.

Restries
1 N 100

Olimpada Brasileira de Informtica OBI2012

1 MI 8, para I = 1, 2, . . . , N .

Exemplos
Entrada 5 1 8 5 3 4 Sada 4

Entrada 3 6 8 1

Sada 3

Olimpada Brasileira de Informtica OBI2012

Frequencia na aula
Nome do arquivo fonte: frequencia.c, frequencia.cpp, frequencia.pas, frequencia.java, ou frequencia.py Certa vez, numa aula, a professora passou um lme para os alunos assistirem. Durante este lme, ela passou uma lista de presena em sua sala para vericar a presena dos alunos, onde cada aluno deveria inserir apenas seu nmero de registro. Alguns alunos contudo, como possuem amigos que fogem da aula, decidiram ser camaradas e inseriram os nmeros de registro de seus amigos fujes. O problema que muitos alunos so amigos de alunos que fogem da aula e alguns nmeros de registro acabaram sendo repetidamente inseridos na lista de presena. Alm de tudo, alguns dos alunos que se esperava que no estivessem na aula de fato estavam! A professora, ao notar que a lista de presena continha alguns nmeros repetidos, cou sem entender, mas decidiu dar um voto de conana e dar presena a todos os alunos cujos nmeros de registro estavam na lista. Como so muitos alunos na sala e muitos nmeros com repetio, ela pediu a sua ajuda para determinar o total de alunos que receberam presena na aula.

Entrada
A primeira linha da entrada contm um nmero inteiro N , que informa a quantidade de nmeros de registro que apareceram na lista de presena. Cada uma das N linhas seguintes contm um nmero de registro Vi que foi inserido na lista de presena.

Sada
Seu programa deve imprimir uma nica linha, contendo apenas um nmero inteiro, o nmero de alunos que receberam presena.

Restries
1 N 105 Para cada elemento Vi , 0 Vi 106

Informaes sobre pontuao


Em um conjunto de casos que totaliza 40 pontos, N 103 e Vi 103

Exemplos
Entrada 3 2 3 1 Sada 3

Olimpada Brasileira de Informtica OBI2012

Entrada 7 0 5 12 41 7 5 41

Sada 5

Olimpada Brasileira de Informtica OBI2012

Tarzan
Nome do arquivo fonte: tarzan.c, tarzan.cpp, tarzan.pas, tarzan.java, ou tarzan.py Tarzan vive na oresta e o responsvel por manter a ordem na regio onde vive. Para locomover-se entre as rvores ele s usa cips pois esse um meio de transporte muito mais rpido e seguro do que andar no cho da selva, alm de, claro, poder soltar seu grito caracterstico enquanto viaja. Os cips das rvores tm todos o mesmo alcance. Dessa forma, possvel viajar de cip de uma rvore para outra se a distncia entre elas no mximo D, onde D o alcance dos cips. Recentemente uma forte chuva assolou a regio e derrubou algumas rvores, restando na oresta apenas N rvores. Agora Tarzan quer saber se ele consegue viajar de cip entre todas rvores remanescentes para poder continuar mantendo a ordem na regio. Para poder manter a ordem ele precisa ser capaz de, partindo de qualquer uma das rvores, poder chegar a todas as outras rvores remanescentes, possivelmente passando por outras rvores no caminho, sempre utilizando somente cips.

Entrada
A primeira linha da entrada contm dois inteiros, N e D, indicando respectivamente o nmero de rvores remanescentes e o alcance dos cips. Cada uma das N linhas seguintes contm dois inteiros Xi e Yi , as coordenadas da i-sima rvore. No existem duas rvores com as mesmas coordenadas.

Sada
Seu programa deve escrever uma nica linha, contendo um nico caractere: S se Tarzan consegue viajar de cip entre todas as rvores remanescentes, e N caso contrrio.

Informaes sobre a pontuao


Em um conjunto de casos de teste que totaliza 30 pontos, N 10 Em um conjunto de casos de teste que totaliza 70 pontos, N 100

Restries
2 N 1000 1 D 5000 0 Xi , Yi 5000

Olimpada Brasileira de Informtica OBI2012

Exemplos
Entrada 4 5 1 1 6 1 6 6 11 6 Sada S

Entrada 4 5 1 1 6 6 11 6 13 8

Sada N

Das könnte Ihnen auch gefallen