I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
I OLIMPÍADA DE ALGORITMO – IFSP SÃO CARLOS
Caderno de Tarefas
19 de outubro de 2011
Patrocínio:
Realização:
1
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
INSTRUÇÕES:
•
Este caderno de tarefas é composto por 5 tarefas divididas em 10 páginas. Verifique se o
caderno está completo.
•
É proibido o uso de notebook, celular, smartphone, tablet, pendrive, livros, revistas e
qualquer outro material ou equipamento eletrônico que possa conceder alguma vantagem
e/ou ajuda em relação a prova. O acesso à internet não será permitido.
•
Atente ao nome do código fonte exigido para cada tarefa.
•
As tarefas foram separas em dois níveis de dificuldade: fácil e difícil. As tarefas de nível
fácil têm um valor de 100 pontos e penalidade de 10 pontos para cada submissão errada.
As de nível difícil têm um valor de 200 pontos e penalidade de 20 pontos para cada
submissão errada.
•
Todos os dados devem ser lidos através da entrada padrão (teclado) e escritos na saída
padrão (monitor). Por exemplo: read, readln, write e writeln em Pascal e scanf, printf,
getchar e putchar em C.
•
Após concluído o algoritmo a equipe deverá submeter o código fonte para avaliação e
testes. A partir deste momento a tarefa será avaliada pela banca e a equipe poderá
começar a resolução de outra.
•
Concluído o processo de testes a equipe será avisada se a tarefa está correta ou não.
Caso não, a equipe poderá tentar novamente. Haverá um quadro de classificação onde os
participantes poderão acompanhar o tempo de prova e o número de tarefas submetidas
por cada equipe.
•
A classificação final se dará pelo número de pontos ao final do tempo de prova. Em caso
de empate será adotado os seguintes critérios: número de tarefas resolvidas, número de
submissões erradas, horário da última submissão.
•
Tempo de duração: 3 horas.
2
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
Dia da Semana
Arquivo fonte: semana.pas, semana.c, semana.cpp, semana.java
Valor desta tarefa: 100 pontos. Penalidade: 10 pontos.
José precisa de um programa que calcule em que dia da semana cai o primeiro dia do mês a
partir de um dia qualquer.
1. Tarefa
Sua tarefa será desenvolver um programa que leia o dia do mês e o dia da semana
correspondente e a partir desses dados diga em que dia da semana caiu o primeiro dia desse
mês.
2. Entrada
A primeira entrada será um número inteiro M que representa um dia qualquer do mês. A segunda
entrada será outro número inteiro S que representa o dia da semana correspondente ao dia M.
Considere o número 1 para segunda-feira e 7 para domingo.
Exemplo de entrada:
3 //dia três
3 //quarta-feira
3. Saída
A saída deverá ser uma única linha contendo um número inteiro (de 1 a 7) que represente o dia da
semana correspondente ao primeiro dia daquele mês.
Exemplo de saída (corresponde ao exemplo de entrada acima):
1 //segunda-feira
4. Restrições
1 <= M <= 31
1 <= S <= 7 (1 para segunda-feira … 7 para domingo)
3
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
Olimpíada de Algoritmo
Arquivo fonte: olimpiada.pas, olimpiada.c, olimpiada.cpp, olimpiada.java
Valor desta tarefa: 100 pontos. Penalidade: 10 pontos.
A sua faculdade está organizando uma olimpíada de algoritmo entre os alunos. E para facilitar e
agilizar o processo de classificação os organizadores contrataram você para desenvolver um
algoritmo que analise a pontuação de cada equipe e mostre a classificação final.
1. Tarefa
Sua tarefa será desenvolver um programa que leia aleatoriamente o nome e pontuação de cada
equipe, ordene a lista de classificação e mostre de forma decrescente (do maior para o menor) o
nome das equipes e sua pontuação.
2. Entrada
A primeira entrada será um número inteiro N que representa a quantidade de equipes. As N linhas
seguintes serão compostas pelo nome da equipe e sua pontuação.
Exemplo de entrada:
3
Alpha 200
Omega 100
Beta 150
3. Saída
Ao final das entradas imprima, uma linha para cada, o nome da equipe e sua pontuação
ordenados de forma decrescente (primeiro a maior e por último a menor).
Exemplo de saída (corresponde ao exemplo de entrada acima):
Alpha 200
Beta 150
Omega 100
4. Restrições
2 <= N <= 100
1 <= Pontos <= 10000 (não haverá pontuações iguais)
nome_equipe = string de até 15 caracteres (sem espaços)
4
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
Chuva de Satélites
Arquivo fonte: satelites.pas, satelites.c, satelites.cpp, satelites.java
Valor desta tarefa: 200 pontos. Penalidade: 20 pontos.
A NASA descobriu que muitos de seus satélites estão prestes a cair na terra. Dependendo da
composição e do tamanho desses satélites, eles podem não se desintegrarem completamente ao
entrar na atmosfera terrestre e assim atingir algum país ao redor do mundo. Sabendo disso, a
NASA calculou e divulgou os pontos em que os satélites irão cair.
João estava programando sair de férias e precavido quer saber se nos países que irá visitar existe
a possibilidade de cair algum desses satélites. Para isso ele pediu a sua ajuda.
1. Tarefa
Sua tarefa será elaborar um algoritmo que calcule quantos satélites irão cair nos países que João
passará. Considere que os países são retangulares. Serão fornecidas as coordenadas X e Y do
plano cartesiano dos vértices (superior esquerdo e inferior direito) dos países e depois as
coordenadas X e Y dos pontos que cairão os satélites.
2. Entrada
A primeira entrada será um inteiro N que representa o
número de países que João irá visitar. As N linhas
seguintes serão formadas pelo nome do país, as
coordenadas X e Y do primeiro vértice e as coordenadas X
e Y do segundo vértice. Depois será lido um número inteiro
M que indicará o número de satélites. As M linhas
seguintes serão formadas por dois inteiros, coordenadas X
e Y, que representarão os pontos onde os satélites irão
cair. Exemplo ao lado: representação gráfica.
Exemplo de entrada:
2
Chile 100 200 150 230
Paraguai 200 150 220 190
4
300 175
115 200
210 165
111 221
5
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
3. Saída
Para cada país imprima uma linha contendo o nome e a quantidade de satélites que caíram em
seu território.
Exemplo de saída (corresponde ao exemplo de entrada acima):
Chile 2
Paraguai 1
4. Restrições
1 <= N <=
1 <= M <=
1 <= X <=
1 <= Y <=
nome_pais
100
1000
10000
10000
= string de até 15 caracteres (sem espaços)
6
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
Campeonato de Futebol
Arquivo fonte: futebol.pas, futebol.c, futebol.cpp, futebol.java
Valor desta tarefa: 200 pontos. Penalidade: 20 pontos.
O Professor André está organizando um campeonato de futebol entre seus alunos. Mas ele é um
professor muito preguiçoso e não quer ter o trabalho de ficar calculando os resultados dos jogos
para determinar a classificação final de cada time. Para isso o ele contratou sua equipe para
desenvolver um programa que faça essa tarefa.
1. Tarefa
Sua tarefa será desenvolver um programa que, dado o número de times participantes do
campeonato e o resultado de seus respectivos jogos, determine o total de pontos, vitórias,
empates, derrotas, gols pró, gols contra e saldo de gols de cada time. Lembrando que o time
recebe 3 (três) pontos em caso de vitória, 1 (um) ponto em caso de empate e nenhum ponto para
derrota. Gols pró é o número de gols feitos, gols contra é o número de gols sofridos. Saldo de gols
é o resultado da subtração dos gols pró pelos gols contra.
2. Entrada
A primeira entrada será um número inteiro N que representa a quantidade de times no
campeonato. As próximas N linhas serão os nomes de cada time. A seguinte entrada será um
número inteiro M que representa o número de resultados de jogos a serrem lidos. As próximas M
entradas serão compostas por uma linha com: o nome do time mandante, o número de gols
marcados pelo time mandante, o nome do time visitante e o número de gols marcados pelo time
visitante.
Exemplo de entrada:
4
Santos
Corinthians
Palmeiras
Flamengo
5
Santos 5 Corinthians 0
Flamengo 1 Santos 3
Corinthians 3 Palmeiras 3
Palmeiras 2 Santos 4
Flamengo 2 Corinthians 0
7
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
3. Saída
Ao final das entradas, para cada time, seu programa deve imprimir uma linha contendo os
seguintes dados: nome do time, número de pontos, vitórias, empates, derrotas, gols pró, gols
contra e saldo de gols nesta mesma ordem. Seguindo também, a ordem de entrada dos times.
Exemplo de saída (corresponde ao exemplo de entrada acima):
Santos 9 3 0 0 12 3 9
Corinthians 1 0 1 2 3 10 -7
Palmeiras 1 0 1 1 5 7 -2
Flamengo 3 1 0 1 3 3 0
4. Restrições
2 <= N <= 100
1 <= M <= 100
nome_time = string de até 15 caracteres (sem espaços)
8
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
Diferença entre Datas
Arquivo fonte: datas.pas, datas.c, datas.cpp, datas.java
Valor desta tarefa: 200 pontos. Penalidade: 20 pontos.
Cleovaldo é um jovem muito nerd que adora assistir aos programas da National Geographic. Um
dia viu uma reportagem que falava das profecias sobre o fim do mundo. Uma delas é a profecia
sobre o calendário Maia, onde diz que o mundo terá fim no ano de 2012, mais precisamente no
dia 21 de dezembro de 2012. Muito preocupado com a chegada desses dias, Cleovaldo pediu
para você fazer um programa que diga a quantidade de dias de vida que lhe restam e assim poder
se planejar para realizar todos seus objetivos enquanto vivo.
1. Tarefa
Sua tarefa será desenvolver um programa que, dado o dia, mês e ano de duas datas distintas,
calcule a diferença em dias entre elas.
2. Entrada
A entrada será composta de duas linhas. Cada uma contendo três inteiros que representam o dia,
mês e ano de cada data, respectivamente. Lembrando que os meses de janeiro a dezembro têm
respectivamente a seguinte quantidade de dias: 31, 28 (29 para ano bissexto), 31, 30, 31, 30, 31,
31, 30, 31, 30 e 31. Último ano bissexto: 2008.
Exemplos de entrada:
10 5 2005
11 5 2005
10 10 2010
25 10 2011
3. Saída
Ao final das entradas, imprima uma única linha contendo um inteiro representando o número de
dias entre as duas datas.
Exemplos de saída (corresponde aos exemplos de entrada acima):
1
380
9
I OLIMPÍADA DE ALGORITMO - IFSP SÃO CARLOS
4. Restrições
1 <= dia <= 31
1 <= mês <= 12
1900 <= ano <= 2999 (formato AAAA - com quatro dígitos)
data1 < data2 (a segunda data será sempre maior que a primeira)
10
Download

I OLIMPÍADA DE ALGORITMO