Você está na página 1de 9

Problema A

Copa do Mundo
Nome do arquivo fonte: copa.c, copa.cpp ou copa.java
Uma Copa do Mundo de futebol de botes est sendo realizada com times de todo o mundo.
A classificao baseada no nmero de pontos ganhos pelos times, e a distribuio de pontos
feito da forma usual. Ou seja, quando um time ganha um jogo, ele recebe 3 pontos; se o jogo
termina empatado, ambos os times recebem 1 ponto; e o perdedor no recebe nenhum ponto.
Dada a classificao atual dos times e o nmero de times participantes na Copa do Mundo, sua
tarefa de determinar quantos jogos terminaram empatados at o momento.

Entrada
A entrada contm vrios casos de teste. A primeira linha de um caso de teste contm dois
inteiros T e N, indicando respectivamente o nmero de times participantes (2 T 200) e o
nmero de partidas jogadas (0 N 104). Cada uma das T linhas seguintes contm o nome de
um time (uma cadeia de mximo 10 letras e dgitos), seguido de um espao em branco, seguido
do nmero de pontos que o time obteve at o momento.
O final da entrada indicado por uma linha que contm apenas o nmero zero.
Os dados devem ser lidos da entrada padro.

Sada
Para cada um dos casos de teste seu programa deve imprimir uma nica linha contendo um
nmero inteiro, representando a quantidade de jogos que terminaram empatados at o
momento.
O resultado de seu programa deve ser escrito na sada padro.
Exemplo de entrada
Exemplo de sada
33
Brasil 3
Austrlia 3
Crocia 3
33
Brasil 5
Japo 1
Austrlia 1
00

0
2

Problema B
Suco de Acerola
Nome do arquivo fonte: suco.c, suco.cpp ou suco.java
Natural das Antilhas, a acerola (Malpighia glabra Linn, tambm conhecida como cereja das
Antilhas) j era apreciada pelos nativos das Amricas h muitos sculos. Mas o grande interesse
por essa fruta surgiu na dcada de 1940, quando cientistas porto-riquenhos descobriram que
a acerola contm grande quantidade de cido ascrbico (vitamina C). A acerola apresenta, em
uma mesma quantidade de polpa, at 100 vezes mais vitamina C do que a laranja e o limo, 20
vezes mais do que a goiaba e 10 vezes mais do que o caju e a amora.
Um grupo de amigos est visitando o Stio do Pica-Pau Amarelo, renomado produtor de acerola.
Com a permisso de Dona Benta, dona do stio, colheram uma boa quantidade de frutas, e
pretendem agora fazer suco de acerola, que ser dividido igualmente entre os amigos durante
o lanche da tarde.
Conhecendo o nmero de amigos, a quantidade de frutas colhidas, e sabendo que cada unidade
da fruta suficiente para produzir 50 ml de suco, escreva um programa para determinar qual
o volume, em litros, que cada amigo poder tomar.

Entrada
A entrada contm vrios casos de teste. Cada caso de teste composto por uma nica linha,
contendo dois nmeros inteiros N e F, indicando respectivamente o nmero de amigos (1 N
103) e a quantidade de frutas colhidas (1 F 103).
O final da entrada indicado por uma linha que contm apenas dois zeros, separados por um
espao em branco.
Os dados devem ser lidos da entrada padro.

Sada
Para cada caso de teste da entrada seu programa deve imprimir uma nica linha, contendo um
nmero real, escrito com preciso de duas casas decimais, representando o volume de suco, em
litros, a que cada amigo tem direito.
O resultado de seu programa deve ser escrito na sada padro.
Exemplo de entrada
Exemplo de sada
11
5 431
101 330
00

0.05
4.31
0.16

Problema C
Babel
Nome do arquivo fonte: babel.c, babel.cpp babel.java
Joaozinho e Mariazinha so dois irmos que esto muito empolgados com suas aulas de idiomas,
cada um est fazendo vrios diferentes cursinhos. Ao chegar em casa comentam sobre
gramtica, vocabulrio, cultura dos pases etc. Numa dessas conversas perceberam que
algumas palavras so comuns a mais de um idioma, mesmo que no necessariamente tenham
o mesmo significado. Por exemplo, amigo existe em portugus e espanhol e tem o mesmo
significado, enquanto que date uma palavra comum entre francs e ingls mas que pode ter
significados diferentes, uma vez que date tambm se refere a um encontro em ingls, alm de
data de calendrio. J red em espanhol se refere a uma rede, enquanto que em ingls se
refere cor vermelha. Outro exemplo seria actual que, em ingls significa algo real e, em
espanhol, tem o significado de presente, atual (como em portugus).
Empolgados com essas descobertas, resolveram escrever num caderno todas as palavras em
comum que conseguiram pensar, associando cada uma a um par de idiomas. Observador como
, Joaozinho props um desafio a Mariazinha: dados um idioma de origem e um de destino,
escrever uma srie de palavras sendo que a primeira necessariamente deveria pertencer ao
idioma de origem e a ltima ao de destino. Duas palavras adjacentes nessa sequncia deveriam
necessariamente pertencer a um mesmo idioma. Por exemplo, se o idioma de origem fosse
portugus e o de destino francs, Mariazinha poderia escrever a sequncia amigo actual date
(portugus/espanhol, espanhol/ingls, ingls/francs).
Para a surpresa de Joaozinho, Mariazinha conseguiu resolver o problema com muita facilidade.
Irritado com o sucesso de sua irm, ele resolveu complicar ainda mais o problema com duas
restries: Mariazinha deve encontrar a soluo que tenha o menor comprimento da sequncia
total no contando os espaos entre as palavras e duas palavras consecutivas no podem ter a
mesma letra inicial.
Sendo assim, a soluo anterior passa a ser invalida, pois amigo e actual tem a mesma letra
inicial. E possvel, porm, encontrar outra soluo, que no caso seria amigo red date, cujo
comprimento total 12.
Joozinho fez uma extensa pesquisa na internet e compilou uma enorme lista de palavras e
desafiou Mariazinha a resolver o problema. Como possvel que haja mais de uma soluo, ele
pediu para que ela apenas respondesse o comprimento da sequncia encontrada dadas as
restries ou se no h soluo possvel. Voc seria capaz de ajudar Mariazinha?

Entrada
A entrada contm vrios casos de teste. A primeira linha de um caso de teste contm um inteiro
M (1 M 2000), representando o total de palavras compiladas por Joozinho. A segunda linha
contm duas cadeias de caracteres distintas O e D, separadas por um espao em branco,
indicando os idiomas de origem e destino respectivamente. Cada uma das M linhas seguintes
contm trs cadeias de caracteres I1, I2 e P, separadas por um espao em branco, representando
dois idiomas e uma palavra comum entre ambos (I1 e I2 so sempre diferentes). Todas as cadeias
de caracteres tero tamanho mnimo 1 e mximo 50 e contero apenas letras minsculas. Um
mesmo par de idiomas pode ter vrias palavras diferentes associadas a ele, porm uma mesma
palavra P nunca ser repetida.
O final da entrada indicado por uma linha que contm apenas um zero.
Os dados devem ser lidos da entrada padro.

Sada
Para cada caso de teste da entrada seu programa deve imprimir um nico inteiro, o
comprimento da menor sequncia que satisfaa as restries de Joozinho, ou impossvel (em
minsculas, sem acento) caso no seja possvel.
O resultado de seu programa deve ser escrito na sada padro.
Exemplo de entrada
Exemplo de sada
4
portugues frances
ingles espanhol red
espanhol portugues amigo
frances ingles date
espanhol ingles actual
4
portugues alemao
ingles espanhol red
espanhol portugues amigo
frances ingles date
espanhol ingles actual
6
portugues frances
ingles espanhol red
espanhol portugues amigo
frances ingles date
frances espanhol la
portugues ingles a
espanhol ingles actual
0

12
impossivel
5

Problema D
Dama
Nome do arquivo fonte: dama.c, dama.cpp

dama.java

O jogo de xadrez possui vrias peas com movimentos curiosos: uma delas a dama, que pode
se mover qualquer quantidade de casas na mesma linha, na mesma coluna, ou em uma das duas
diagonais, conforme exemplifica a figura abaixo:

O grande mestre de xadrez Kary Gasparov inventou um novo tipo de problema de xadrez: dada
a posio de uma dama em um tabuleiro de xadrez vazio (ou seja, um tabuleiro 8 8, com 64
casas), de quantos movimentos, no mnimo, ela precisa para chegar em outra casa do tabuleiro?
Kary achou a soluo para alguns desses problemas, mas teve dificuldade com outros, e por isso
pediu que voc escrevesse um programa que resolve esse tipo de problema.

Entrada
A entrada contm vrios casos de teste. A primeira e nica linha de cada caso de teste contm
quatro inteiros X1, Y1, X2 e Y2 (1 X1,Y1,X2,Y2 8). A dama comea na casa de coordenadas (X1,Y1),
e a casa de destino a casa de coordenadas (X2,Y2). No tabuleiro, as colunas so numeradas da
esquerda para a direita de 1 a 8 e as linhas de cima para baixo tambm de 1 a 8. As coordenadas
de uma casa na linha X e coluna Y so (X,Y ).
O final da entrada indicado por uma linha contendo quatro zeros.
Os dados devem ser lidos da entrada padro.

Sada
Para cada caso de teste da entrada seu programa deve imprimir uma nica linha na sada,
contendo um nmero inteiro, indicando o menor nmero de movimentos necessrios para a
dama chegar em sua casa de destino.
O resultado de seu programa deve ser escrito na sada padro.
Exemplo de entrada
Exemplo de sada
4462
3535
5543
0000

1
0
2

Problema E
Set
Nome do arquivo fonte: set.c, set.cpp ou set.java
Set um jogo jogado com um baralho no qual cada carta pode ter uma, duas ou trs figuras.
Todas as figuras em uma carta so iguais, e podem ser crculos, quadrados ou tringulos.
Um set um conjunto de trs cartas em que, para cada caracterstica (nmero e figura), ou as
trs cartas so iguais, ou as trs cartas so diferentes. Por exemplo, na figura abaixo, (a) um
set vlido, j que todas as cartas tem o mesmo tipo de figura e todas elas tem nmeros diferentes
de figuras. Em (b), tanto as figuras quanto os nmeros so diferentes para cada carta. Por outro
lado, (c) no um set, j que as duas ltimas cartas tem a mesma figura, mas esta diferente da
figura da primeira carta.

(a)

(b)

(c)

O objetivo do jogo formar o maior nmero de sets com as cartas que esto na mesa; cada vez
que um set formado, as trs cartas correspondentes so removidas de jogo.
Quando h poucas cartas na mesa, fcil determinar o maior nmero de sets que podem ser
formados; no entanto, quando h muitas cartas h muitas combinaes possveis. Seu colega
quer treinar para o campeonato mundial de Set, e por isso pediu que voc fizesse um programa
que calcula o maior nmero de sets que podem ser formados com um determinado conjunto de
cartas.

Entrada
A entrada contm vrios casos de teste. A primeira linha de cada caso de teste contm um
inteiro N (3 N 3 104), indicando o nmero de cartas na mesa; cada uma das N linhas
seguintes contm a descrio de uma carta.
A descrio de uma carta dada por duas palavras separadas por um espao; a primeira, um,
dois ou tres, indica quantas figuras aquela carta possui. A segunda, circulo (ou circulos),
quadrado (ou quadrados) ou triangulo (ou triangulos) indica qual tipo de figura est
naquela carta.
O final da entrada e indicado por uma linha contendo um zero.
Os dados devem ser lidos da entrada padro.

Sada
Para cada caso de teste da entrada seu programa deve imprimir uma nica linha na sada,
contendo um nmero inteiro, indicando o maior nmero de sets que podem ser formados com
as cartas dadas.
O resultado de seu programa deve ser escrito na sada padro.

Exemplo de entrada

Exemplo de sada

3
um circulo
dois circulos
tres circulos
3
um triangulo
tres quadrados
dois circulos
6
dois quadrados
dois quadrados
dois quadrados
dois quadrados
dois quadrados
dois quadrados
4
um quadrado
tres triangulos
um quadrado
dois triangulos
0

1
1
2
0

Problema F
Vampiros
Nome do arquivo fonte: vampiros.c, vampiros.cpp ou vampiros.java
Felipinho est empolgado com seu novo jogo de RPG sobre guerras entre cls de vampiros.
Nesse jogo ele representa um personagem de um vampiro e constantemente entra em conflito
contra vampiros de outros cls. Tais batalhas so realizadas com base nas caractersticas de
cada personagem envolvido e com a ajuda de um dado comum de seis faces.
Por simplicidade, vamos considerar apenas as lutas entre dois vampiros, vampiro 1 e vampiro
2. Cada um possui uma energia vital (chamaremos de EV1 e EV2 respectivamente) e, alm disso,
so determinadas uma fora de ataque AT e uma capacidade de dano D.
O combate realizado em turnos da maneira descrita a seguir. A cada turno um dado rolado,
se o valor obtido for menor do que ou igual a AT, o vampiro 1 venceu o turno, caso contrrio o
vampiro 2 quem venceu. O vencedor suga energia vital do adversrio igual ao valor D, ou seja,
D pontos de EV so diminudos do perdedor e acrescentados ao vencedor. O combate segue at
que um dos vampiros fique com EV igual a ou menor do que zero.
Por exemplo, suponhamos que EV1 = 7, EV2 = 5, AT = 2, D = 4. Rola-se o dado e o valor obtido foi
3. Nesse caso, o vampiro 2 venceu o turno e, portanto, 4 pontos de EV so diminudos do
vampiro 1 e acrescentados ao vampiro 2. Sendo assim, os novos valores seriam EV1 = 3 e EV2 =
9. Observe que se no prximo turno o vampiro 2 ganhar novamente, o combate ir terminar. Os
valores de AT e D so constantes durante todo o combate, apenas EV1 e EV2 variam.
Apesar de gostar muito do jogo, Felipinho acha que os combates esto muito demorados e
gostaria de conhecer de antemo a probabilidade de vencer, para saber se vale a pena lutar.
Assim, ele pediu que voc escrevesse um programa que, dados os valores iniciais de EV1, EV2,
alm de AT e D, calculasse a probabilidade de o vampiro 1 vencer o combate.

Entrada
A entrada contm vrios casos de teste. Cada caso de teste ocupa uma nica linha, com os quatro
inteiros EV1, EV2, AT e D separados por um espao em branco (1 EV1,EV2 10, 1 AT 5 e 1
D 10).
O final da entrada indicado por uma linha contendo quatro zeros.
Os dados devem ser lidos da entrada padro.

Sada
Para cada caso de teste da entrada seu programa deve imprimir uma nica linha. A linha deve
conter apenas um nmero real, escrito com preciso de uma casa decimal, representando, em
termos de percentagem, a probabilidade de o vampiro 1 vencer o combate.
O resultado de seu programa deve ser escrito na sada padro.
Exemplo de entrada

Exemplo de sada

1131
1211
8531
7524
0000

50.0
3.2
61.5
20.0