OBI2016 Caderno de Tarefas

Documentos relacionados
OBI2012 Caderno de Tarefas

OBI2015 Caderno de Tarefas

OBI2014 Caderno de Tarefas

OBI2012 Caderno de Tarefas

OBI2014 Caderno de Tarefas

OBI2011 Caderno de Tarefas

OBI2012 Caderno de Tarefas

OBI2007 Caderno de Tarefas

OBI2016 Caderno de Tarefas

OBI2013 Caderno de Tarefas

OBI2012 Caderno de Tarefas

OBI2014 Caderno de Tarefas

OBI2014 Caderno de Tarefas

Caderno de Problemas. 09 de Abril de 2011 A PROVA TEM DURAÇÃO DE 3 HORAS

OBI2010 Caderno de Tarefas

OBI2010 Caderno de Tarefas

OBI2013 Caderno de Tarefas

OBI2009 Caderno de Tarefas

OBI2012 Caderno de Tarefas

II MARATONA DE PROGRAMAÇÃO IFSP SÃO CARLOS. Caderno de Tarefas. 25 de outubro de 2012

OBI2010 Caderno de Tarefas

OBI2005 Caderno de Tarefas

Seleção de Problemas:

Maratona de Programação da SBC 2015

OBI2016 Caderno de Tarefas

Trabalho de LP 15/07/2013. Prof. Flávio Miguel Varejão

Instruções para a realização da Prova Leia com muita atenção. Prova da segunda fase

OBI2006 Caderno de Tarefas

Olimpíada Brasileira de Informática OBI2008 Programação Nível Júnior Fase 2 1. Auto Estrada. Nome do arquivo fonte: auto.c, auto.cpp ou auto.

Warmup para a 5 a Seletiva da UFPR 8 de Agosto de 2014

II TORNEIO DE PROGRAMAÇÃO

Linguagem C Entrada/Saída (console)

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

OBI2014 Caderno de Tarefas

OBI2008 Caderno de Tarefas

1ª LISTA DE EXERCÍCIOS

Maratona de Programação da SBC 2013

Caderno de Problemas

Introdução à Lógica de Programação

Introdução à Lógica de Programação. Adaptação de Luis Otavio Alvares

4ª Lista de Exercícios de Programação I

8ª série / 9º ano do Ensino Fundamental

Especificação do Trabalho Prático

Praticar os princípios da ordenação, cópia de formatos, hifenização, trabalho com múltiplos documentos, modos de visualização e impressão.

10 Atletismo 10.1 Escalões: 10 escalões - A, B, C, D e E, para masculinos e femininos Modalidades: Masculino Escalão B

5ª série / 6º ano do Ensino Fundamental

1. [VETOR][SALA] Cálculo da média aritmética de 10 valores armazenados em um vetor.

Introdução à Lógica de Programação

Exercícios: Vetores e Matrizes

4ª Lista de Exercícios de Programação I

PROGRAMAÇÃO DE COMPUTADORES I - BCC Vetores e matrizes

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Modularidade. Objetivos: Introduzir noções básicas de modularidade. Funções e procedimentos

OBI2012 Caderno de soluções

Lista de Exercícios. Programação de Computadores I Engenharia Ambiental

Elementos básicos das linguagens de programação

MINISTÉRIO DA EDUCAÇÃO COLÉGIO PEDRO II REITORIA PRÓ-REITORIA DE ENSINO EXAME DE SELEÇÃO E CLASSIFICAÇÃO DE CANDIDATOS PROVA DE MATEMÁTICA 2013 CAMPUS

Capítulo 2 Operadores. A função scanf()

MINISTÉRIO DA EDUCAÇÃO COLÉGIO PEDRO II REITORIA PRÓ-REITORIA DE ENSINO EXAME DE SELEÇÃO E CLASSIFICAÇÃO DE CANDIDATOS PROVA DE MATEMÁTICA 2013 CAMPUS

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Sexta Aula Prática - 28 de abril de 2011

OBI2011 Caderno de Tarefas

TRABALHO 1 o TRIMESTRE

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções

Descrição da Linguagem Pascal Jr.

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Lógica de Programação Módulo I Prof.: Ricardo Lokchin. Fazer os exercícios abaixo na Linguagem C ou em ALGORITMOS.

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Manual de instalação e configuração

Competições de Programação: Google, Facebook e mais um mundo de oportunidades no Vale do Silício

Trabalho Prático. Descrição Considere os seguintes dados a respeito de uma pessoa:

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber 3/10/ :43 AM

Variáveis, Tipos de Dados e Operadores

Aula 3 Primeiros programas

OBI2013 Caderno de Soluções

Lista de Exercícios Algoritmos Vetores. 10) Escreva um algoritmo em PORTUGOL que armazene em um vetor todos os números

GABARITO Questão a b c d e

4ª Série de Exercícios Variáveis Compostas Homogêneas 1. Faça um algoritmo que leia, via teclado, 10 valores do tipo inteiro e os guarde na memória.

Problema do Caminho Hamiltoniano

10 Atletismo 10.1 Escalões: 10 - A, B, C, D e E, para masculinos e femininos Modalidades: Masculino Escalão B. Masculino Escalão C Corridas

Caderno de Problemas

Exercícios: Arquivos

Aula Anterior. Decomposição algorítmica (continuação)

Estruturas de Repetição

7 Comandos e Estruturas de Controle

OLIMPÍADA RIO - BRASIL 2016

Análise Combinatória. Matemática Discreta. Prof Marcelo Maraschin de Souza

COLÉGIO PEDRO II MEC Exame de Seleção e Classificação ao 1º ano do Ensino Médio a Série do Ensino Médio Regular

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Exercícios Repetição

Olimpíada Brasileira de Robótica

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

Transcrição:

OLIMPÍADA BRASILEIRA DE INFORMÁTICA SOCIEDADE BRASILEIRA DE COMPUTAÇÃO OBI06 Caderno de Tarefas Modalidade Programação Nível Júnior Fase 7 de agosto de 06 A PROVA TEM DURAÇÃO DE HORAS Promoção: Apoio: v.0

Olimpíada Brasileira de Informática OBI06 Instruções LEIA ATENTAMENTE ESTAS INSTRUÇÕES ANTES DE INICIAR A PROVA Este caderno de tarefas é composto por 6 páginas (não contando a folha de rosto), numeradas de a 6. Verifique se o caderno está completo. A prova deve ser feita individualmente. É proibido consultar a Internet, livros, anotações ou qualquer outro material durante a prova. É permitida a consulta ao help do ambiente de programação se este estiver instalado e disponível no computador em que você estiver realizando a prova.. As tarefas têm o mesmo valor na correção. A correção é automatizada, portanto siga atentamente as exigências da tarefa quanto ao formato da entrada e saída de seu programa. Não implemente nenhum recurso gráfico nas suas soluções (janelas, menus, etc.), nem utilize qualquer rotina para limpar a tela ou posicionar o cursor. As tarefas não estão ordenadas, neste caderno, por ordem de dificuldade; procure resolver primeiro as questões mais fáceis. Preste muita atenção no nome dos arquivos fonte indicados nas tarefas. Soluções na linguagem C devem ser arquivos com sufixo.c; soluções na linguagem C++ devem ser arquivos com sufixo.cc ou.cpp; soluções na linguagem Pascal devem ser arquivos com sufixo.pas; soluções na linguagem Java devem ser arquivos com sufixo.java e a classe principal deve ter o mesmo nome do arquivo fonte; soluções na linguagem Python devem ser arquivos com sufixo.py ou.py, dependendo da versão utilizada; e soluções na linguagem Javascript devem ter arquivos com sufixo.js. Para problemas diferentes você pode escolher trabalhar com linguagens diferentes, mas apenas uma solução, em uma única linguagem, deve ser submetida para cada problema. Ao final da prova, para cada solução que você queira submeter para correção, copie o arquivo fonte para o seu diretório de trabalho ou pen-drive, conforme especificado pelo seu professor. Não utilize arquivos para entrada ou saída. Todos os dados devem ser lidos da entrada padrão (normalmente é o teclado) e escritos na saída padrão (normalmente é a tela). Utilize as funções padrão para entrada e saída 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 função padrão, como por exemplo Scanner, BufferedReader, BufferedWriter e System.out.println em Python: read,readline,readlines,input,raw_input (apenas Python), print,write em Javascript: scanf, printf Procure resolver o problema de maneira eficiente. Na correção, eficiência também será levada em conta. As soluções serão testadas com outras entradas além das apresentadas como exemplo nas tarefas.

Olimpíada Brasileira de Informática OBI06 Medalhas Nome do arquivo: medalhas.c, medalhas.cpp, medalhas.pas, medalhas.java, medalhas.js ou medalhas.py A natação foi um dos esportes mais emocionantes das Olimpíadas do Rio. Houve até uma prova na qual três atletas chegaram empatados, cada um recebendo uma medalha de prata! Normalmente, porém, os três primeiros colocados terminam a prova em tempos distintos e, portanto, temos a distribuição mais comum de medalhas: o nadador que terminou no menor tempo recebe medalha de ouro; o nadador que terminou com o segundo menor tempo recebe medalha de prata; e o que terminou com o terceiro menor tempo recebe medalha de bronze. Neste problema, dados os três tempos distintos de finalização da prova, dos três nadadores que ganharam medalhas, seu programa deve dizer quem ganhou medalha de ouro, quem ganhou prata e quem ganhou bronze. OURO PRATA BRONZE A primeira linha da entrada contém um inteiro T, indicando o tempo em que o nadador terminou a prova. A segunda linha da entrada contém um inteiro T, indicando o tempo de finalização do nadador. Por fim, a terceira linha da entrada contém um inteiro T, indicando o tempo em que o nadador terminou a prova. Seu programa deve imprimir três linhas na saída. A primeira linha deve conter o número do nadador que ganhou medalha de ouro; a segunda linha, o número do nadador que ganhou prata; e a terceira linha, o número do nadador que levou bronze. Os tempos T, T e T são inteiros distintos, com valores entre e 000, inclusive. 0 8 4 46 47 48 7

Olimpíada Brasileira de Informática OBI06 Gincana Nome do arquivo: gincana.c, gincana.cpp, gincana.pas, gincana.java, gincana.js ou gincana.py As duas turmas do terceiro ano de sua escola realizam anualmente uma gincana. Nessa gincana, a delegação de cada turma é dividida em grupos de K pessoas, de forma que K seja o maior número possível que divida as duas delegações sem que sobre alguém. Depois, os grupos competem uns com os outros, ganhando pontos para determinar a turma vencedora. Sua turma pode levar qualquer número X de pessoas entre e M, a quantidade de alunos na turma, e você sabe que a turma rival levará exatamente N pessoas para a gincana. Os integrantes da sua turma são muito bons em competições individuais, mas não trabalham bem em equipe. Portanto, é sua tarefa encontrar a maior delegação possível que sua turma pode levar à competição para que a gincana aconteça com grupos de K = pessoa. Por exemplo, se N = 9 e M = 6 a sua turma deve levar uma delegação de X = 5 pessoas, já que, para esse valor, a única divisão possível é em grupos de K = pessoa e, para X = 6, os grupos seriam de pessoas. A primeira e única linha contém dois inteiros N e M, representando respectivamente o tamanho da delegação rival e o tamanho da sua turma. Seu programa deve produzir uma única linha, contendo um inteiro X, o maior tamanho possível da delegação da sua turma para o qual a gincana aconteça com grupos de uma pessoa. N, M 0 8. Informações sobre a pontuação Em um conjunto de casos de teste equivalente a 40 pontos, N, M 0. Em um conjunto de casos de teste equivalente a 60 pontos, N, M 0 5. Em um conjunto de casos de teste equivalente a 80 pontos, N, M 0 7. 9 6 5 6 9 7 6 0 6

Olimpíada Brasileira de Informática OBI06 4 Caverna de Ordinskaya Nome do arquivo: caverna.c, caverna.cpp, caverna.pas, caverna.java, caverna.js ou caverna.py Alguns de seus amigos decidiram viajar até a Russia para explorar Ordinskaya, a caverna subaquática mais comprida do país. Apesar da boa visibilidade das águas da caverna sempre é possível encontrar novas passagens e túneis que levam para longe da gruta principal, o que poderia fazer com que alguém se perdesse e provavelmente congelasse nas frias temperaturas observadas ali. Para evitar que algo assim ocorresse durante os mergulhos, o grupo usou uma fita métrica para marcar o caminho feito e garantir um retorno seguro. Além disso aproveitaram para medir quanto haviam explorado, sempre que retornavam à superfície alguém do grupo anotava num caderno o quão longe haviam ido. O único problema com essa estratégia é que a cada mergulho pessoas diferentes ficavam responsáveis por verificar a fita métrica e anotar quanto havia sido explorado. Assim, se o comprimento da fita era 0 metros, após um mergulho em que o grupo explorou metros da caverna, um dos amigos poderia ter desenrolado a fita do começo para o fim e anotar que metros foram explorados, enquanto outro mais desatento, sem perceber que havia desenrolado a fita no sentido contrário, poderia anotar que 7 metros foram explorados. Apenas no final da viagem seus amigos perceberam a bagunça feita e agora pediram sua ajuda para reconstruir as distâncias de fato exploradas. Você foi informado que antes da viagem o grupo comprou uma fita com M metros e que no total eles fizeram N mergulhos. Outra informação importante é que a cada novo mergulho pelo menos a mesma distância do mergulho anterior era explorada, então se o comprimento da fita fosse de 0 metros e as anotações feitas fossem e 8 metros, nessa ordem, os únicos cenários que realmente poderiam ter acontecido são: metros no primeiro mergulho e 8 no segundo; 7 metros no primeiro mergulho e 8 no segundo. Mas se os valores anotados foram e 8, existem três possibilidades: metros no primeiro mergulho e 8 no segundo; metros no primeiro mergulho e no segundo; 8 metros no primeiro mergulho e 8 no segundo. Como pode ter ocorrido algum engano nas anotações, pode ser impossível reconstruir a sequência original, não se preocupe, todos vão entender caso isso aconteça. A primeira linha contém dois inteiros N e M, representando respectivamente a quantidade de mergulhos que o grupo fez e o comprimento em metros da fita que levaram para a exploração. A segunda linha contém N inteiros A, A,..., A N representando as medições feitas a cada mergulho, na ordem em que foram anotadas. Seu programa deve produzir uma única linha, contendo apenas um inteiro, que representa a soma das distâncias exploradas. Caso exista mais de uma sequência possível, imprima a menor soma das sequencias possíveis. Se não existir nenuma sequência compatível com os dados, imprima apenas o inteiro -. N 0 4.

Olimpíada Brasileira de Informática OBI06 5 M 5 0 5. 0 A i M. Informações sobre a pontuação Em um conjunto de casos de teste equivalente a 0 pontos, N 0 e M 5 0. Em um conjunto de casos de teste equivalente a 60 pontos, N 0 e M 5 0. 5 7 5 6 0 0 5 -

Olimpíada Brasileira de Informática OBI06 6 Fuga com helicóptero Nome do arquivo: fuga.c, fuga.cpp, fuga.pas, fuga.java, fuga.js ou fuga.py Um fugitivo, um helicóptero e um policial estão em posições distintas numa pista circular, exatamente como a mostrada na figura ao lado, com dezesseis posições numeradas de 0 a 5 em direção anti-horária. O helicóptero e o policial ficam sempre parados. O objetivo do fugitivo é chegar no helicóptero sem passar pelo policial antes, claro. Ele pode decidir correr na direção horária, ou na direção anti-horária. Neste problema, dadas as posições do helicóptero, do policial e do fugitivo, e a direção em que o fugitivo decide correr, seu programa deve dizer se ele vai ou não conseguir fugir! Na figura, se o fugitivo decidir correr na direção horária, ele consegue fugir; se decidir correr na direção anti-horária, ele vai ser preso antes de chegar no helicóptero! 6 F 7 8 9 0 H 5 4 0 5 4 P A entrada consiste de uma linha com quatro inteiros: H, P, F e D, representando, respectivamente, as posições do helicóptero, do policial e do fugitivo, e a direção em que o fugitivo corre, para horário e para anti-horário. Seu programa deve imprimir uma linha contendo o caracter S se o fugitivo consegue fugir, ou N caso contrário. Os inteiros H, P e F são distintos e estão entre 0 e 5, inclusive. 4 4 7 - S 4 4 7 N 5 9 8 - S 0 4 5 - N