Вы находитесь на странице: 1из 9

1

IVa. Olimpada de Programao Maio/09

Caderno de Tarefas Nvel 2

Regras de Funcionamento Nvel 2

1. As questes sero anunciadas no incio da Olimpada, s 09h00min. Os participantes tero 2


horas para apresentar solues, na forma de implementao desenvolvida em qualquer dos
compiladores previstos: C++ DEV-C++, C DEV-C++, C++ Visual C++, JAVA, GCC e G++.

2. A prova dever ser resolvida individualmente.

3. Os trabalhos sero avaliados por um jri formado por professores do INATEL.

4. Quando um participante julgar que tem um programa que resolve um problema, dever submet-
lo correo dos juzes, que compilaro e executaro o mesmo para uma bateria de testes
desconhecida dos participantes. Um problema ser considerado resolvido se, para todos os
testes da bateria, devolver o resultado esperado pelos juzes. Para cada submisso o participante
receber uma resposta, que poder ser satisfatria (e o problema est resolvido) ou indicar
algum erro: resposta errada, tempo de execuo excedido, erro de execuo, erro de
compilao, etc.

5. Ser considerado vencedor aquele que resolver a maior quantidade de problemas nas 2 horas de
competio. Empates no nmero de problemas resolvidos sero classificados pelo tempo
corrigido. Ganhar aquele que tiver o menor tempo corrigido. O tempo corrigido ser dado pela
soma dos tempos corrigidos somente dos problemas corretamente resolvidos pelo participante. O
tempo corrigido de um problema ser dado pelo nmero de minutos decorridos desde o incio da
competio at o momento da submisso correta somado a uma penalidade de 20 minutos por
submisso incorreta feita anteriormente neste problema. Em caso de empate, ser considerado
vencedor o participante que tiver a primeira submisso correta. Persistindo o empate, a
organizao far um sorteio entre os participantes envolvidos.

6. A organizao da competio ser responsvel pela deciso de qualquer caso no previsto.

7. Material permitido para consulta: qualquer material impresso (livros, apostilas, cdigos impressos,
etc.), e a ajuda (help) do sistema.

8. No ser permitido o uso da internet nem de qualquer dispositivo de armazenamento eletrnico


de dados (disquetes, pendrives, etc.).

9. Os participantes inscritos permitiro o uso e divulgao dos programas submetidos pela


organizao da competio.
2

IVa. Olimpada de Programao Maio/09

(balo azul)
Problema 1
Arquivo fonte: bit.c, bit.cc, bit.cpp ou bit.java

As Ilhas Weblands formam um reino independente nos mares do Pacfico. Como um reino recente, a
sociedade muito influenciada pela informtica. A moeda oficial o Bit; existem notas de B$ 50,00,
B$10,00, B$5,00 e B$1,00. Voc foi contratado(a) para ajudar na programao dos caixas automticos
de um grande banco das Ilhas Weblands.

1. 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.

2. 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.
Exemplo de Entrada
1
72
0

3. Sada
Para cada conjunto de teste da entrada seu programa deve produzir trs 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 de Sada

Teste 1
0 0 0 1

Teste 2
1 2 0 2

(esta sada corresponde ao exemplo de entrada acima)

4. Restries
0 V 10000 (V= 0 apenas para indicar o fim da entrada)
3

IVa. Olimpada de Programao Maio/09

(balo laranja)
Problema 2
arquivo fonte: lua.c, lua.cc, lua.cpp ou lua.java

Sem as protees da atmosfera e do cinturo magntico que existem na Terra, a Lua fica exposta ao
ataque do Sol, que um astro em constante exploso atmica. As exploses do Sol emitem ondas
letais de partculas. Uma pessoa que ficasse desprotegida na superfcie da Lua, num lugar onde o Sol
incidisse diretamente, sofreria um bombardeio radioativo to intenso quanto se estivesse nas
imediaes da usina russa de Chernobyl no momento do acidente que matou 31 pessoas, em 1986.
Alm da radiao solar, outro efeito desta falta de proteo contra o Sol que existe na Lua a enorme
variao de temperatura. Nas regies prximas do equador lunar, a variao de temperatura brutal,
passando de cerca de 130 graus positivos durante o dia a 129 graus negativos noite.

Para estudar com mais preciso as variaes de temperatura na superfcie da Lua, a NASA enviou
Lua uma sonda com um sensor que mede a temperatura de 1 em 1 minuto. Um dado importante que os
pesquisadores desejam descobrir como se comporta a mdia da temperatura, considerada em
intervalos de uma dada durao (uma hora, meia hora, oito horas, etc.). Por exemplo, para a seqncia
de medies 8, 20, 30, 50, 40, 20, -10, e intervalos de quatro minutos, as mdias so respectivamente
108/4=27, 140/4=35, 140/4=35 e 100/4=25.

1. Tarefa
Voc foi recentemente contratado pela NASA, e sua primeira tarefa escrever um programa que,
conhecidos a seqncia 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.

2. 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 medies de
temperatura de uma seqncia obtida pelo sensor, e o tamanho dos intervalos, em minutos, em que as
mdias devem ser calculadas. As N linhas seguintes contm um nmero inteiro cada, representando a
seqncia de medidas do sensor. O final da entrada indicado quando N = M = 0.

Exemplo de Entrada
4 2
-5
-12
0
6
7 4
35
-35
5
100
100
50
50
0 0
4

IVa. Olimpada de Programao Maio/09

3. Sada
Para cada conjunto de teste da entrada seu programa deve produzir trs 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 no 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 de Sada

Teste 1
-8 3

Teste 2
26 75

(esta sada corresponde ao exemplo de entrada acima)

4. Restries
0 N 10000 (N = 0 apenas para indicar o fim da entrada)
-200 Temperatura 200
1 M N
5

IVa. Olimpada de Programao Maio/09

(balo verde)
Problema 3
Arquivo fonte: hanoi.c, hanoi.cc, hanoi.cpp ou hanoi.java

O quebra-cabeas Torres de Hanoi muito antigo e conhecido, sendo constitudo de um conjunto de N


discos de tamanhos diferentes e trs pinos verticais, nos quais os discos podem ser encaixados.

Cada pino pode conter uma pilha com qualquer nmero de discos, desde que cada disco no seja
colocado acima de outro disco de menor tamanho. A configurao inicial consiste de todos os discos
no pino 1. O objetivo do quebra-cabeas mover todos os discos para um dos outros pinos, sempre
obedecendo restrio de no colocar um disco sobre outro menor.

Um algoritmo para resolver este problema o seguinte.


procedimento Hanoi(N, Orig, Dest, Temp)
se N = 1 ento
mover o menor disco do pino Orig para o pino Dest;
seno
Hanoi(N-1, Orig, Temp, Dest);
mover o N-simo menor disco do pino Orig para o pino Dest;
Hanoi(N-1, Temp, Dest, Orig);
Fim-se
fim

1. Tarefa
Sua tarefa escrever um programa que determine quantos movimentos de trocar um disco de um pino
para outro sero executados pelo algoritmo acima para resolver o quebra-cabea.

2. 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.

Exemplo de Entrada
1
2
0
6

IVa. Olimpada de Programao Maio/09

3. Sada
Para cada conjunto de teste, o seu programa deve escrever trs 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 so
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 de Sada

Teste 1
1

Teste 2
3

(esta sada corresponde ao exemplo de entrada acima)

4. Restries
0 N 30 (N = 0 apenas para indicar o final da entrada)
7

IVa. Olimpada de Programao Maio/09

(balo vermelho)
Problema 4
Arquivo fonte: par.c, par.cc, par.cpp ou par.java

Muitas crianas gostam de decidir todas as disputas atravs do famoso jogo de Par ou mpar. Nesse
jogo, um dos participantes escolhe Par e o outro mpar. Aps a escolha, os dois jogadores mostram,
simultaneamente, uma certa quantidade de dedos de uma das mos. Se a soma dos dedos das mos dos
dois jogadores for par, vence o jogador que escolheu Par inicialmente, caso contrrio vence o que
escolheu mpar.

1. Tarefa
Dada uma seqncia de informaes sobre partidas de Par ou mpar (nomes dos jogadores e nmeros
que os jogadores escolheram), voc deve escrever um programa para indicar o vencedor de cada uma
das partidas.

2. 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 contm 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
contm 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
8

IVa. Olimpada de Programao Maio/09

3. 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 Sada,
abaixo, deve ser seguida rigorosamente.

Exemplo de Sada

Teste 1
Pedro
Pedro
Paulo

Teste 2
Claudio
Carlos

(esta sada corresponde ao exemplo de entrada acima)

4. Restries
0 N 1000 ( N = 0 apenas para indicar o fim da entrada)
0A5
0B5
1 comprimento do nome de jogador 10
9

IVa. Olimpada de Programao Maio/09

(balo branco)
Problema 5
Arquivo fonte: taxi.c, taxi.cc, taxi.cpp ou taxi.java

A Companhia de Txi Tabajara (CTT) uma das maiores empresas de transporte do pas. Possui uma
vasta frota de carros e opera em todas as grandes cidades. Recentemente a CTT modernizou a sua
frota, adquirindo um lote de 500 carros bi-combustveis. Alm do maior conforto para os passageiros e
o menor gasto com manuteno, com os novos carros possvel uma reduo adicional de custo: como
o preo da gasolina est sujeito a variaes muito bruscas e pode ser vantagem, em certos momentos,
utilizar lcool como combustvel. Entretanto, os carros possuem um melhor desempenho utilizando
gasolina, ou seja, em geral, um carro percorre mais quilmetros por litro de gasolina do que por litro
de lcool.

1. Tarefa
Voc 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
no haver diferena de custo entre abastecer com lcool ou gasolina a CTT prefere utilizar gasolina.

2. Entrada
A entrada composta por uma linha contendo quatro nmeros reais com preciso 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. A entrada deve ser lida do dispositivo de entrada padro (normalmente o teclado).

3. 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. A sada deve ser escrita no dispositivo de sada padro (normalmente a tela).

4. Restries
0.01 A 10.00
0.01 G 10.00
0.01 Ra 20.00
0.01 Rg 20.00

Вам также может понравиться