maratona de programação semana ... -...

15
Ministério da Educação Universidade Tecnológica Federal do Paraná Câmpus Toledo Maratona de Programação 3 a Semana Acadêmica de Engenharia e Tecnologia 29 de Março de 2017 Caderno de Problemas Regras do Torneio 1. Composição das Equipes (a) Cada equipe deverá ser composta por 03 (três) integrantes, dos quais um deve ser o capitão e pelo menos um dos integrantes deve estar inscrito na 3 a SAET. (b) 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. 2. Regras de Condução do Torneio (a) As equipes receberão um caderno de prova com 10 problemas que devem ser resolvidos durante as 4 horas de competição. (b) Os problemas deverão ser resolvidos em uma das seguintes linguagens de programação: C, C++ ou Java. (c) Quando uma equipe julgar que tem um programa que resolve um problema, ela pode submetê-lo pelo sistema para a correção pelos juízes, que compilam e executam este pro- grama para uma bateria de testes que é desconhecida das equipes. (d) Um problema é considerado resolvido se, para todos os testes da bateria, ele devolve o resultado esperado pelos juízes. (e) Para cada submissão a equipe recebe uma resposta, conforme a Tabela 1. (f) A equipe vencedora é aquela que resolver a maior quantidade de problemas nas 4 horas de competição, de acordo com o placar do sistema de submissão. (g) No caso de empates no número de problemas resolvidos as equipes serão classificadas pelo menor tempo. (h) O tempo total da equipe é dado pela soma dos tempos dos problemas corretamente resolvidos pela equipe. (i) O tempo de um problema é computado 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. (j) Persistindo o empate, será considerada vencedora a equipe com a primeira submissão correta para qualquer um dos problemas. (k) Casos omissos serão resolvidos pela comissão organizadora. 3. Sobre a Conduta das Equipes Página 1 / 15

Upload: dangxuyen

Post on 16-Dec-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Ministério da EducaçãoUniversidade Tecnológica Federal do Paraná

Câmpus Toledo

Maratona de Programação3a Semana Acadêmica de Engenharia e Tecnologia

29 de Março de 2017

Caderno de Problemas

Regras do Torneio

1. Composição das Equipes

(a) Cada equipe deverá ser composta por 03 (três) integrantes, dos quais um deve ser o capitãoe pelo menos um dos integrantes deve estar inscrito na 3a SAET.

(b) Ao capitão cabe representar a equipe durante a condução do torneio, servindo de elo decomunicação entre a equipe, os juízes e o comitê organizador.

2. Regras de Condução do Torneio

(a) As equipes receberão um caderno de prova com 10 problemas que devem ser resolvidosdurante as 4 horas de competição.

(b) Os problemas deverão ser resolvidos em uma das seguintes linguagens de programação: C,C++ ou Java.

(c) Quando uma equipe julgar que tem um programa que resolve um problema, ela podesubmetê-lo pelo sistema para a correção pelos juízes, que compilam e executam este pro-grama para uma bateria de testes que é desconhecida das equipes.

(d) Um problema é considerado resolvido se, para todos os testes da bateria, ele devolve oresultado esperado pelos juízes.

(e) Para cada submissão a equipe recebe uma resposta, conforme a Tabela 1.

(f) A equipe vencedora é aquela que resolver a maior quantidade de problemas nas 4 horas decompetição, de acordo com o placar do sistema de submissão.

(g) No caso de empates no número de problemas resolvidos as equipes serão classificadas pelomenor tempo.

(h) O tempo total da equipe é dado pela soma dos tempos dos problemas corretamente resolvidospela equipe.

(i) O tempo de um problema é computado pelo número de minutos decorridos desde o inícioda competição até o momento da submissão correta somado com uma penalidade de 20minutos por submissão incorreta feita anteriormente para o mesmo problema.

(j) Persistindo o empate, será considerada vencedora a equipe com a primeira submissão corretapara qualquer um dos problemas.

(k) Casos omissos serão resolvidos pela comissão organizadora.

3. Sobre a Conduta das Equipes

Página 1 / 15

Tabela 1: Tipo de Respostas.ID Mensagem Significado1 Yes O programa compilou e executou sem erros para toda a ba-

teria de testes.2 NO - Presentation error A resposta produzida pelo programa apresenta algum erro

na formatação da saída.3 NO - Wrong answer O programa produziu uma resposta errada para algum dos

casos de teste da bateria de testes dos juízes.4 NO - Time limit exceeded O tempo de execução do programa para a bateria de testes

dos juízes foi além do tempo esperado.5 NO - Runtime error O programa compilou corretamente, mas abortou durante

sua execução.6 NO - Compilation error O programa não compila corretamente na máquina do juiz.

O sistema também interpreta warnings como erros.7 NO - If possible, contact staff Geralmente, indica que ocorreu um erro no sistema de sub-

missão, o capitão deverá comunicar os juízes.

(a) As equipes poderão trazer e utilizar qualquer material de consulta, desde que na formaimpressa (notas de aula, apostilas, listagens de programas, revistas, manuais, livros, etc).

(b) 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.

(c) Os participantes não poderão se afastar do local da competição sem autorização ou acom-panhamento do comitê organizador, sob pena de desclassificação da equipe.

(d) Qualquer reclamação ou solicitação para a organização do torneio deverá ser realizada apenaspelo capitão da equipe.

4. Instruções

(a) Este caderno de instruções é composto por 15 páginas. Verifique se o caderno está completoquando o receber. Caso alguma página esteja faltando, comunique ao pessoal de apoio, queprovidenciará outra cópia do caderno.

(b) 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.

(c) A correção é automatizada, portanto, siga atentamente as exigências do problema quantoao formato da entrada e saída de seus programas.

(d) Não implemente nenhum recurso gráfico nas suas soluções (janelas, menus, etc.), nem utilizequalquer rotina para limpar a tela ou posicionar o cursor.

(e) Os problemas não estão ordenados por ordem de dificuldade; procure resolver primeiro asquestões mais fáceis.

(f) Preste atenção no nome dos arquivos fonte indicados nas tarefas, sendo que apenas umarquivo deve ser submetido. As soluções devem ser arquivos com sufixo “.c”, “.cpp” ou“.java”.

(g) Não utilize funções para entrada e saída de arquivos, pois o sistema de submissão utiliza aentrada e saída padrão.

5. Disposições Finais

(a) A organização da competição é responsável pela decisão de qualquer caso não previsto.(b) As equipes inscritas permitem o uso e divulgação dos programas submetidos à correção pela

organização da competição.(c) O torneio será realizado no laboratório E-303. O aquecimento terá início 30 minutos antes

da competição, que tem prazo máximo de 4 horas. As equipes deverão estar no local dotorneio com 10 minutos de antecedência.

Página 2 / 15

Problema A - MergulhoArquivo: mergulho.[c|cpp|java]

O recente terremoto em Nlogônia não chegou a afetar muito as edificações da capital, principalepicentro do abalo. Mas os cientistas detectaram que o principal dique de contenção teve um danosignificativo na sua parte subterrânea que, se não for consertado rapidamente, pode causar o seudesmoronamento, com a consequente inundação de toda a capital. O conserto deve ser feito pormergulhadores, a uma grande profundidade, em condições extremamente difíceis e perigosas. Mascomo é a sobrevivência da própria cidade que está em jogo, seus moradores acudiram em grandenúmero como voluntários para essa perigosa missão. Como é tradicional em missões perigosas, cadamergulhador recebeu no início do mergulho uma pequena placa com um número de identificação. Aoterminar o mergulho, os voluntários devolviam a placa de identificação, colocando-a em um repositório.O dique voltou a ser seguro, mas aparentemente alguns voluntários não voltaram do mergulho. Vocêfoi contratado para a penosa tarefa de, dadas as placas colocadas no repositório, determinar quaisvoluntários perderam a vida salvando a cidade.

EntradaA entrada é composta de duas linhas. A primeira linha contém dois inteiros N e R, indicando

respectivamente o número de voluntários que mergulhou e o número de voluntários que retornou domergulho. Os voluntários são identificados por números de 1 a N. A segunda linha da entrada contémR inteiros, indicando os voluntários que retornaram do mergulho (ao menos um voluntário retorna domergulho).

SaídaSeu programa deve produzir uma única linha, contendo os identificadores dos voluntários que não

retornaram do mergulho, na ordem crescente de suas identificações. Deixe um espaço em brancoapós cada identificador (note que isto significa que deve haver um espaço em branco também após oúltimo identificador). Se todos os voluntários retornaram do mergulho, imprima apenas o caractere ‘*’(asterisco).

Restrições

• 1 ≤ R ≤ N ≤ 104

Exemplo

Entrada Saída5 3 2 43 1 5

Entrada Saída6 6 *6 1 3 2 5 4

Página 3 / 15

Problema B - TriângulosArquivo: triagulos.[c|cpp|java]

São dados N pontos em uma circunferência. Você deve escrever um programa que determine quantostriângulos equiláteros distintos podem ser construídos usando esses pontos como vértices. A figuraabaixo ilustra um exemplo; (a) mostra um conjunto de pontos, determinados pelos comprimentos dosarcos de circunferência que têm pontos adjacentes como extremos, e (b) mostra os dois triângulos quepodem ser construídos com esses pontos.

EntradaA primeira linha da entrada contém um número inteiro N , o número de pontos dados. A segunda

linha contém N inteiros Xi , representando os comprimentos dos arcos entre dois pontos consecutivosna circunferência: para 1 ≤ i ≤ (N − 1), Xi representa o comprimento do arco entre os pontos i ei+ 1;XN representa o comprimento do arco entre os pontos N e 1.

SaídaSeu programa deve produzir uma única linha, contendo um único inteiro, o número de triângulos

equiláteros distintos que podem ser construídos utilizando os pontos dados como vértices.

Restrições

• 3 ≤ N ≤ 105

• 1 ≤ Xi ≤ 103, para 1 ≤ i ≤ N

Exemplo

Entrada Saída8 24 2 4 2 2 6 2 2

Entrada Saída6 13 4 2 1 5 3

Página 4 / 15

Problema C - Grid de LargadaArquivo: grid.[c|cpp|java]

Na Nlogônia, vai ser realizada a sensacional final mundial da fórmula 17. Os competidores sealinham na largada e disputam a corrida. Você vai ter acesso aos grids de largada e de chegada. Aquestão é determinar o número mínimo de ultrapassagens que foram efetuadas durante a competição.

EntradaCada caso de teste utiliza três linhas. A primeira linha de um caso de teste contém um inteiro N

indicando o número de competidores. Cada competidor é identificado com um número de 1 a N. Asegunda linha de cada caso tem os N competidores, em ordem do grid de largada. A terceira linha decada caso tem os mesmos competidores, porém agora na ordem de chegada.

SaídaPara cada caso de teste imprima uma linha contendo um único número inteiro, que indica o número

mínimo de ultrapassagens necessárias para se chegar do grid de largada ao grid de chegada.

Restrições

• 2 ≤ N ≤ 24

Exemplo

Entrada Saída5 31 2 3 4 53 1 2 5 4

Entrada Saída5 33 1 2 5 41 2 3 4 5

Entrada Saída5 43 1 2 5 45 3 2 1 4

Página 5 / 15

Problema D - LetrasArquivo: letras.[c|cpp|java]

EntradaA primeira linha da entrada contém um inteiro N (2 ≤ N ≤ 100), o tamanho do parque. As N

linhas seguintes contém, cada uma, uma sequência de N letras, definindo o parque.

SaídaSeu programa deve imprimir uma linha contendo um inteiro, o comprimento de um caminho con-

sistente mínimo. Se não houver um caminho consistente, imprima -1.

Exemplo

Entrada Saída6DdaAaACBAccaeEaeeEbBbabBDbDdDcfFaAaC

13

Página 6 / 15

Entrada Saída7aAaaaaaaAaaaAaaAaaaAAaaAaAaaAaAaaAaaaAAaAaaaaaaAa

-1

Página 7 / 15

Problema E - Concurso de ContosArquivo: concurso.[c|cpp|java]

Machado gosta muito de escrever. Já escreveu muitos contos, resenhas, relatos de viagens que fez, alémde um pequeno romance. Agora Machado quer participar de um concurso de contos, que tem regrasmuito rígidas sobre o formato de submissão do conto.

As regras do concurso especificam o número máximo de caracteres por linha, o número máximo delinhas por página, além de limitar o número total de páginas. Adicionalmente, cada palavra deve serescrita integralmente em uma linha (ou seja, a palavra não pode ser separada silabicamente em duaslinhas). Machado quer escrever um conto com o maior número de palavras possível, dentro das regrasdo concurso, e precisa de sua ajuda.

Dados o número máximo de caracteres por linha, o número máximo de linhas por página, e aspalavras do conto que Machado está escrevendo, ele quer saber o número mínimo de páginas que seuconto utilizaria seguindo as regras do concurso.

Entrada A primeira linha de um caso de teste contém três inteiros N , L e C, que indicam,respectivamente, o número de palavras do conto de Machado, o número máximo de linhas por páginae o número máximo de caracteres por linha. O conto de Machado é inovador e não contém nenhumcaractere além de letras maiúsculas e minúsculas e espaços em branco, sem letras acentuadas e semcedilha. A segunda linha contém o conto de Machado, composto de N palavras separadas por espaçosem branco; há espaço em branco somente entre duas palavras, e entre duas palavras há exatamenteum espaço em branco.

SaídaPara cada caso de teste imprima uma única linha, contendo um único número inteiro, indicando o

número mínimo de páginas que o conto de Machado ocupa, considerando as regras do concurso.

Restrições

• 2 ≤ N ≤ 1000

• 1 ≤ L ≤ 30

• 1 ≤ C ≤ 70

• 1 ≤ comprimentodecadapalavra ≤ C

Exemplos

Página 8 / 15

Entrada14 4 20Se mana Piedade tem casado com Quincas Borba apenas me daria uma esperanca colateralSaída2Entrada16 3 30No dia seguinte entrou a dizer de mim nomes feios e acabou alcunhando me Dom CasmurroSaída1Entrada5 2 2a de i de oSaída3Entrada5 2 2a e i o uSaída3

Página 9 / 15

Problema F - GCDArquivo: gcd.[c|cpp|java]

Problema a seguir se dá sobre o valor de GCD (Greatest Common Divisor). Dado o valor N, vocêdeverá achar o valor de G. A definição de G é dada por:

O GCD(i,j) indica o maior divisor comum entre o inteiro i e o inteiro j.

EntradaA entrada é dada por um valor N, sendo que (1 < N < 501).

SaídaA saída corresponde a um valor G, em uma linha separada.

Exemplos

Entrada Saída10 67100 13015

Página 10 / 15

Problema G - Etiquetas coloridasArquivo: etiquetas.[c|cpp|java]

EntradaA entrada consiste de três linhas contendo, respectivamente, os inteiros R, G e B, 1 <= R, G, B

<= ffffff . Todos os três inteiros na entrada estão em hexadecimal, com letras minúsculas.

SaídaImprima uma linha na saída contendo um inteiro positivo, em hexadecimal com letras minúsculas,

representando a quantidade máxima de etiquetas que podemos colar na parede.

Exemplos

Entrada Saída1fa8 2be813bc12fffff0 1ffffffab2c1ffffff 1fffffc00000311

Página 11 / 15

Problema H - DivisoresArquivo: divisores.[c|cpp|java]

EntradaA entrada consiste em uma única linha que contém quatro números inteiros A, B, C, D, como

descrito acima. Sendo que (1 ≤ A,B,C,D ≤ 109).

Saída Seu programa deve produzir uma única linha. Caso exista pelo menos um número n para osquais A, B, C, D façam sentido, a linha deve conter o menor n possível. Caso contrário, a linha deveconter -1.

Exemplos

Entrada Saída2 12 8 2 43 4 60 105 6

Página 12 / 15

Problema I - Andando no TempoArquivo: tempo.[c|cpp|java]

Exemplos

Entrada Saída22 5 22 S31 110 79 S45 8 7 N

Página 13 / 15

Problema J - RisadaArquivo: risada.[c|cpp|java]

EntradaA entrada consiste em uma única linha, contendo uma sequência de no máximo 50 caracteres,

formada apenas por letras minúsculas sem acentuação. A sequência contém pelo menos uma vogal.

SaídaSeu programa deve produzir uma única linha. Exibir ’S’ caso a risada seja das mais engraçadas,

ou ’N’ caso contrário.

Exemplos

Entrada Saídahahaha Sriajkjdhhihhjak Na Shuaauhahhuahau S

Página 14 / 15

AquecimentoW1 - Média

Arquivo: media.[c|cpp|java]

Faça um programa para calcular a média de 10 notas de alunos, e ao final imprima a maior nota ea menor. Considere que a nota de cada aluno é informada pelo usuário, e a resposta é a média, comuma casa decimal, bem como a maior e a menor.

EntradaA entrada consiste de números inteiros, que correspondem as notas dos alunos.

SaídaSeu programa deve produzir uma saída para cada entrada, começando pelo valor da média, seguido

pela maior e depois pela menor, em linhas distintas.Exemplo

Entrada Saída60 70 80 90 100 90 80 70 60 60 76.0

10060

Página 15 / 15