II TORNEIO DE PROGRAMAÇÃO

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

Maratona de Programação da SBC 2014

OBI2017 Caderno de Tarefas

Simulado OBI2018 Caderno de Tarefas

OBI2012 Caderno de Tarefas

OBI2016 Caderno de Tarefas

Maratona de Programação 3 a Semana Acadêmica de Engenharia e Tecnologia. 29 de Março de Caderno de Problemas

OBI2015 Caderno de Tarefas

OBI2016 Caderno de Tarefas

OBI2016 Caderno de Tarefas

MODALIDADE PROGRAMAÇÃO 1ª FASE

OBI2014 Caderno de Tarefas

OBI2016 Caderno de Tarefas

CADERNO DE PROBLEMAS EXEMPLO

OBI2016 Caderno de Tarefas

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

1ª LISTA DE EXERCÍCIOS

Fundamentos de Programação

Aula 3 PROFESSOR TUTA

Regras de Funcionamento

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

Exercícios Repetição

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

OBI2012 Caderno de Tarefas

Caderno de Tarefas Nível 2. Regras de Funcionamento Nível 2

Caderno de Problemas

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

Seleção de Problemas:

Aula 4 Introdução ao C

Algoritmos e Programação

Aula 3 Primeiros programas

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

Questão 1 Exemplo de execução 1 (com N=6): Exemplo de execução 2 (com N=4):

Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Terceira Aula Prática - 10 de setembro de 2010

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

Estruturas de Repetição

CCO 016 / COM 110 Fundamentos de Programação

Para começar... Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Comando REPITA (repeat) Comando REPITA (repeat)

Aula 3 Constantes e funções de E/S

Exercícios: Vetores e Matrizes

Caderno de Exercícios Aula 2 (Variáveis, Tipos e Comandos Básicos)

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Programação Universidade da Beira Interior Departamento de Informática 2007/08

Fundamentos de Lógica e Algoritmos Aula 2.5 Conceitos Básicos de Algoritmos. Prof. Dr. Bruno Moreno

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Algoritmos e Programação

Métodos Computacionais em Física

Universidade Federal do Espírito Santo - CT - DI Trabalho Computacional - PD II - Engenharia Elétrica Profa. Maria Cristina Rangel

Linguagem C Estruturas de Repetição

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo

Programação Procedimental

system("pause"); //Envia comando para o sistema operacional solicitando parada de execução do programa } //limitador do corpo do programa

Programação Básica. Estrutura de um algoritmo

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

OPI Modalidade Programação. Fase 1

Apresentação da ferramenta de programação. Comandos de entrada e saída. Prof. Alex Camargo

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

Lista 2 TP060. Exercícios Vetores

Linguagem C (repetição)

No Windows há basicamente dois tipos de programas de usuário:

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Exercício... Para começar... Resolução... Para começar... Para começar...

Desenvolvimento de Aplicações Desktop

INSTRUÇÕES DE REPETIÇÃO

OBI2014 Caderno de Tarefas

3. Linguagem de Programação C

Estruturas de Repetição. for() while() do-while() break; continue;

Introdução a programação Comandos de repetição

Backtracking. Pequenos Bispos

Programação II. Aula 3

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

Conhecendo a Linguagem de Programação C

Linguagem de Programação C

Transcrição:

II TORNEIO DE PROGRAMAÇÃO TOLEDO MAIO 2015 Página 1 de 12

Equipe Organizadora Prof. Me. Sidgley Camargo de Andrade Prof. Me. Eduardo Pezutti Beletato dos Santos Prof. Me. Elder Elisandro Schemberger Prof. Me. Daniel Cavalcanti Jeronymo Juízes Prof. Me. Sidgley Camargo de Andrade Prof. Me. Eduardo Pezutti Beletato dos Santos Prof. Me. Elder Elisandro Schemberger Prof. Me. Daniel Cavalcanti Jeronymo Página 2 de 12

1. Regras do Torneio Composição das Equipes 1. Cada equipe deverá ser composta por 03 (três) integrantes, dos quais, obrigatoriamente, um deve ser o capitão e um deve ter ingressado a partir do segundo semestre de 2014 em qualquer curso do campus Toledo da UTFPR. 2. Ao capitão cabe representar a equipe durante a condução do torneio, servindo de elo de comunicação entre a equipe, os juízes e o comitê organizador. 3. Ao membro ingressante cabe entregar, compilar e executar os casos de teste aos juízes. Regras de Condução do Torneio 1. As equipes receberão um caderno de prova com 04 problemas que devem ser resolvidos durante as 03 horas de competição. 2. Os problemas deverão ser resolvidos em uma das seguintes linguagens de programação: C; Java. 3. Quando uma equipe julgar que tem um programa que resolve um problema, ela pode submetê-lo à correção pelos juízes, que solicitarão ao aluno ingressante que compile e execute este programa para uma bateria de testes que é desconhecida das equipes. 4. A compilação deve, obrigatoriamente, ser realizada via linha de comando no terminal do GNU-Linux ou prompt de comandos do MS-Windows. 5. Um problema é considerado resolvido se ele for compilado pelo aluno ingressante conforme item (4) e, para todos os testes da bateria, ele devolve o resultado esperado pelos juízes. 6. Para cada submissão a equipe recebe uma resposta, conforme a Tabela 1. Mensagem Submissão Aceita Significado O programa compilou e executou sem erros para toda a bateria de Página 3 de 12

Erro de Apresentação Resposta Errada Tempo Limite Excedido Erro em Tempo de Execução Erro em Tempo de Compilação Função Inválida Submissão Inválida testes. A resposta produzida pelo programa apresenta algum erro na formatação da saída. O programa produziu uma resposta errada para algum dos casos de teste da bateria de testes dos juízes. O tempo de execução do programa para a bateria de testes dos juízes foi além do tempo esperado. O programa pode ter entrado em laço infinito, ou seu algoritmo não está otimizado. O programa compilou corretamente, mas abortou durante sua execução. O aluno ingressante não conseguiu compilar corretamente o programa na máquina do juiz ou o sistema também interpreta warnings como erros. Geralmente, indica que o valor de retorno da função main() está incorreta ou foi omitido. Geralmente indica que um programa foi submetido para uma linguagem errada ou para um problema errado, ou o juiz decidiu invalidar a submissão por algum motivo. 7. A equipe vencedora é aquela que resolver a maior quantidade de problemas nas 03 horas de competição. 8. Empates no número de problemas resolvidos são classificados pelo tempo corrigido. Ganha a equipe que tiver o menor tempo corrigido. 9. O tempo corrigido da equipe é dado pela soma dos tempos corrigidos dos problemas corretamente resolvidos pela equipe. 10.O tempo corrigido de um problema é dado pelo número de minutos decorridos desde o início da competição até o momento da submissão correta somado com uma penalidade de 20 minutos por submissão incorreta feita anteriormente para o mesmo problema. 11. Persistindo o empate, será considerada vencedora a equipe com a primeira submissão correta para este problema. 12. Caso o empate ainda persista, será considerada vencedora a equipe com a primeira submissão correta para qualquer problema. Página 4 de 12

13. Se o empate ainda persistir, a organização fará um sorteio entre as equipes empatadas para resolver a questão. Sobre a Conduta das Equipes 1. As equipes poderão trazer e utilizar qualquer material de consulta, desde que na forma impressa (notas de aula, apostilas, listagens de programas, revistas, manuais, livros, etc). 2. As equipes não poderão trazer consigo nenhum material em meio digital (CDs, pen-drives, etc.) e não terão acesso à Internet durante o período de realização do torneio. 3. Os participantes não poderão se afastar do local da competição sem autorização do comitê organizador, sob pena de desclassificação da equipe. 4. Qualquer reclamação ou solicitação para a organização do torneio deverá ser realizada apenas pelo capitão da equipe. Disposições Finais 1. A organização da competição é responsável pela decisão de qualquer caso não previsto. 2. As equipes inscritas permitem o uso e divulgação dos programas submetidos à correção pela organização da competição. 3. O torneio será realizado no laboratório de eletrônica. A competição tem início às 14h00min com prazo máximo de 03 horas. As equipes deverão estar no local do torneio com 10 minutos de antecedência. 2. Instruções 1. Este caderno de instruções é composto por 12 páginas. Verifique se o caderno está completo quando o receber. Caso alguma página esteja faltando, comunique ao pessoal de apoio, que providenciará outra cópia do caderno. Página 5 de 12

2. Os problemas serão fornecidos no início do torneio e serão iguais para todas as equipes. Todos os problemas têm o mesmo valor na correção. 3. A correção é automatizada, portanto, siga atentamente as exigências do problema quanto ao formato da entrada e saída de seus programas. 4. 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. 5. Os problemas não estão ordenados por ordem de dificuldade; procure resolver primeiro as questões mais fáceis. 6. Preste atenção no nome dos arquivos fonte indicados nas tarefas. As soluções devem ser arquivos com sufixo.c ou.java. 7. Não utilize arquivos para entrada ou saída. Todos os dados devem ser lidos do arquivo de entrada padrão (teclado) e escritos no arquivo de saída padrão (tela). Utilize as funções padrão para entrada e saída de dados: linguagem de programação C : scanf(), printf(), getchar(), putchar(), fputs(), fgets().; linguagem de programação Java: System.out.print(), System.out.println(), Classe Scanner. 8. 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 no caderno de problemas. Página 6 de 12

Problema 01 O Hobbit: Uma Viagem Inesperada Arquivo: hobbit.[c,java] Enquanto fazia uma de suas caminhadas diárias pelo Condado, um hobbit encontrou uma carta perdida na estrada e endereçada à vila de Bree. Dentro da carta encontra-se uma receita escrita por um alquimista para a cura de um jovem que reside em Bree e sofre de uma pestilência fatal. Do lado de fora da carta, em tom escarlate lê-se URGENTE. Assim que entendeu a importância do que tinha em mãos o hobbit partiu em disparada em direção ao povoado. Entretanto, inocente e ingênuo como todos de sua espécie, o hobbit esqueceu-se do que jaz entre o Condado e Bree a Velha Floresta. Ao chegar a sua entrada o pequeno hobbit foi paralisado pelo medo, afinal as lendas sobre os terrores da Velha Floresta são muitas no Condado. Para sua sorte, um velho mago chamado Dai Kstra o encontra e conta sobre como as regiões perigosas podem ser evitadas, o assegurando de que é possível viajar ileso pela Velha Floresta caso ele siga direções precisas. Para refrescar sua memória o velho mago desenha no chão com seu cajado um mapa da Velha Floresta e após um momento de contemplação como se estivesse considerando o caminho escreve em um papel as direções para que o hobbit faça uma viagem segura e consiga entregar a valiosa carta. Quais são as direções tomadas pelo hobbit? A primeira linha descreve o tamanho do mapa com dois inteiros, o primeiro a largura W e o segundo a altura H. As próximas H linhas contém W colunas. Cada célula nessa matriz pode ter um de quatro caracteres: um asterisco (*) denota uma região de perigo ou uma região inacessível, um espaço em branco ( ) uma região segura, um (S) o ponto de começo e um (E) o ponto de saída. A saída deverá consistir de uma sequência de caracteres que representam passos. O caractere (N) representa um passo ao norte, o caractere (S) um passo ao sul, o caractere (W) um passo ao oeste e um caractere (E) um passo ao leste. Quando devidamente seguidos estes passos levam do ponto de início ao ponto de saída. Uma saída correta nunca passa por um ponto de perigo ou volta ao ponto de começo. A saída não deverá obrigatoriamente ser o caminho mais curto porém deverá ser um caminho válido entre o ponto de início e o ponto de saída. Página 7 de 12

Exemplo 5 5 *S*** * * E * * * * * ***** 40 8 **********************S***************** ********************* ***** ** * * ******** ** * * * * ************* * ******* ******** *********** *** E ****** **** **************************************** SSSEENNE SESSWWWWWSWWSWWSWWWWWWWWWWWWWW Página 8 de 12

Problema 02 Sudoku Arquivo: sudoku.[c,java] Su Doku (significado japonês número lugar) é o nome dado a um conceito de quebra-cabeça popular. Sua origem é incerta, mas o crédito deve ser atribuído a Leonhard Euler, que inventou uma ideia semelhante, e muito mais difícil, o quebra-cabeça chamado quadrados latinos. O objetivo do quebra-cabeça Su Doku, é substituir os espaços em branco (ou zeros) em uma matriz 9 por 9 de tal modo que cada linha, coluna e caixas 3 por 3 contenham cada um dos dígitos de 1 a 9. Conteúdo do arquivo input-sodoku.txt com três (3) matrizes de Su Doku bem formadas (com uma resposta única). A entrada pode ser por meio de leitura de arquivo. A soma dos três (3) primeiros números do canto superior de cada uma das matrizes. Exemplo Solução 003020600 900305001 001806400 008102900 700000008 006708200 002609500 800203009 005010300 483921657 967345821 251876493 548132976 729564138 136798245 372689514 814253769 695417382 15 Página 9 de 12

Problema 03 Recruta Atrapalhado Arquivo: recruta.[c, java] Este ano o sargento está tendo mais trabalho do que de costume para treinar os novos recrutas. Um deles é muito atrapalhado, e de vez em quando faz tudo errado. Por exemplo, ao invés de virar à direita quando comandado, vira à esquerda, causando grande confusão no batalhão. O sargento tem fama de durão e não vai deixar o recruta em paz enquanto este não aprender a executar corretamente os comandos. Em um sábado à tarde, similar a hoje, enquanto todos os outros recrutas estão de folga, o sargento obrigou o famoso recruta atrapalhado a fazer um treinamento extra. Com o recruta marchando parado no mesmo lugar, o sargento emitiu uma série de comandos Esquerda, volver! e Direita, volver!. A cada comando, o recruta deve girar sobre o mesmo ponto, dando um quarto de volta na direção correspondente ao comando. Exemplificando: Se o recruta está inicialmente com o rosto voltado para a direção Norte, após um comando de Esquerda, volver! ele deve ficar com o rosto voltado para a direção Oeste. Se o recruta está inicialmente com o rosto voltado para o Leste, após um comando Direita, volver! ele deve ter o rosto voltado para o Sul. No entanto, durante o treinamento, em que o recruta tinha inicialmente o rosto voltado para o Norte, o sargento emitiu uma série tão extensa de comandos, e tão rapidamente, que até ele ficou confuso, e não sabe mais para qual direção o recruta deve ter seu rosto voltado após executar todos os comandos. Você pode ajudar o sargento? A entrada contém vários casos de teste. A primeira linha de um caso de teste contém um inteiro N que indica o número de comandos emitidos pelo sargento (1 N 25). A segunda linha contém N caracteres, descrevendo a série de comandos emitidos pelo sargento. Cada comando é representado por uma letra: E (para Esquerda, volver! ) e D (para Direita, volver! ). O final da entrada é indicado por N=0. Para cada caso de teste da entrada, seu programa deve produzir uma única linha da saída, indicando a direção para a qual o recruta deve ter sua face voltada após executar a série de comandos, considerando que no início o recruta tem a face voltada para o Norte. A linha deve conter uma letra entre N, L, S e O, representando respectivamente as direções Norte, Leste, Sul e Oeste. A saída deve ser escrita na saída padrão. Página 10 de 12

Exemplo 3 DDE 2 EE 7 EEDEDDE 0 L S O Página 11 de 12

Problema 04 Lençol Arquivo: lencol.[c, java] João dispõe de dois pedaços retangulares de tecido, e quer usá-los para fazer um lençol, também retangular, de dimensões AxB. Se necessário, os dois pedaços retangulares podem ser unidos por uma costura, mas João quer que a constura seja paralela aos lados dos retângulos. Dadas as dimensões dos pedaços de tecido e do lençol, escreva um programa que determina se é possível João fazer o lençol com as dimensões desejadas. A entrada contém uma única linha, com seis inteiros A 1, B 1, A 2, B 2, A e B, representando, respectivamente, as dimensões dos dois retângulos disponíveis, e as dimensões do retângulo desejado. contrário. Seu programa deve imprimir uma única linha contendo um caractere S se é possível fazer o lençol, e N caso Restrições 1 A 1, B 1, A 2, B 2, A, B 10 6 Exemplo 4 2 3 5 4 4 S 4 2 2 4 4 5 N Página 12 de 12