Maratona de Programação da SBC 2014

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

CADERNO DE PROBLEMAS EXEMPLO

Maratona de Programação da SBC 2013

Maratona de Programação da SBC 2015

Maratona de Programação da SBC 2017

II TORNEIO DE PROGRAMAÇÃO

CPU Campeonato de Programação Universitário

Caderno de Problemas

Maratona de Programação da SBC 2014

CADERNO DE QUESTÕES. A competição terá uma duração de 4 horas (13hs às 17hs) e é composta de uma série de problemas listados neste caderno.

Maratona de Programação da SBC 2017

Treinamento para OBI Simulado 1

Maratona de Programação da SBC 2013

Problema A. Volta. Arquivo: volta.[c cpp java]

Caderno de Problemas

Maratona de Programação da SBC 2011

Problema A. Volta. Entrada

Maratona de Programação da SBC 2016

Maratona de Programação da SBC 2012

CI067 Oficina de Computação Exercícios # 08 1 o semestre 2010

REDE PERT - CPM DEP E A P R A TA T M A EN E TO T DE E M EC E ÂN Â IC I A C

Gerência do Sistema de Arquivos. Adão de Melo Neto

Uma pasta é pouco mais que um contêiner no qual é possível armazenar arquivos. Se

Seletiva Interna da UFMA 2010 Departamento de Informática 16 de Julho de 2010

Organização Patrocínio

Working 08 : Tipos Abstratos de Dados

Maratona de Programação da SBC 2015

III Maratona de Programação DEINF/UFMA 24 de Março de 2006

Problema A Bolhas e baldes Nome do arquivo fonte: bolhas.c, bolhas.cpp ou bolhas.java

Maratona de Programação da SBC 2009

Variáveis Compostas Homogêneas Vetores

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.

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

Simulado OBI2018 Caderno de Tarefas

Seleção de Problemas:

Muitas vezes é necessário exportar os dados do sistema Sphinx para que estes sejam importados em outro sistema.

OBI2015 Caderno de Tarefas

Compactação de Dados. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante.

PROBLEMA A TROCA DE CARTAS

ANÁLISE E PROJETO DE BANCO DE DADOS

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

OPI Modalidade Programação. Fase 1

Gerência do Sistema de Arquivos. Adão de Melo Neto

Backtracking. Pequenos Bispos

Informática I. Aula 14. Aula 14-10/10/2007 1

Problema A Alarme Despertador Nome do arquivo fonte: alarme.c, alarme.cpp ou alarme.java

Universidade Federal do ABC MCTA Programação Estruturada 2018.Q3

Programação II. Aula 3

CONCEITOS DE ALGORITMOS

Sumário Boas vindas Introdução Capitulo 1 Capitulo 2 Capitulo 3 Capitulo 4 Conclusão

Estruturas de Repetição

ROTEIRO OPERACIONAL CONTABIL MÓDULO 04

Olimpíada Brasileira de Informática. A competição nacional para aspirantes a programadores

Variáveis. Lógica de Programação. Prof. Kleber Rezende

PROGRAMAÇÃO A. Vetores

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

Trabalho Prático 2015 Simulador de Circuitos Opção 1 Versão /11/2013

Gerência do Sistema de Arquivos. Adão de Melo Neto

Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Projeto de Informatização Modelo de Projeto

SSC Linguagem de Programação e Aplicações

Nivio Ziviani. Conjunto de transparências elaborado por Nivio Ziviani, Patrícia Correia e Fabiano C. Botelho

Prof. Tiago Alves de Oliveira. Tiago Alves de Oliveira - 1

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

NOVEMBRO E DEZEMBRO DE 2018

Técnicas de Programação

Sub-algoritmos (ou Funções)

Maratona UFMA de Iniciantes de Dezembro de 2006

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Consolidar dados de várias planilhas em uma única planilha

Lista de Exercícios 6 Listas

OBI2013 Caderno de Soluções

Seleção de Problemas:

BUSCA EM ARRAYS. Prof. André Backes. Ato de procurar por um elemento em um conjunto de dados

Manipulação de Arquivos

PROCEDIMENTOS OPERACIONAIS DE TROCA DE MFD PELA REDE CREDENCIADA BEMATECH

Capítulo 11 Sistemas de Arquivos

MARATONA DE PROGRAMAÇÃO INTERNA UERJ 28/11/2009. Este caderno contém 9 páginas com a descrição de 8 problemas definidos a seguir:

1. tamanho do papel para impressão da Dissertação: padrão A4 (210 mm x 297 mm);

Vejamos agora as ferramentas mais utilizadas para criação de imagens:

2ª Mini-Maratona de Programação IF Goiano CA Cristalina

MC-102 Aula 21 Registros

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

Maratona de Programação da SBC 2011

Estruturas de Dados Apresentação

ACH Introdução à Estatística Conteúdo Teórico: 12 - Simulação

Ordenação por Seleção Métodos de Ordenação Parte 3

Métodos de Ordenação

OBI2016 Caderno de Tarefas

Estados dos processos. Infra Estruturas Computacionais. A troca de contexto. Escalonamento de Processos. Escalonamento de Processos

Capítulo 1 Conceitos Básicos

SISTEMA DE CÁLCULO DE POPULAÇÃO E VARIÁVEIS CENSITÁRIAS

OBI2016 Caderno de Tarefas

OBI2017 Caderno de Tarefas

18 o Treino para alunos da UFPR 13 de Maio de 2016

Projeto da 1ª Maratona de Programação. Autora: Wanja M. Oliveira Mascarenhas

Um pequeno caderno para trabalhos na escola e com a família. Para alunos com atraso mental moderado.

Linguagens Regulares. Prof. Daniel Oliveira

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.

Transcrição:

International Collegiate acm Programming Contest 04 event sponsor Maratona de Programação da SBC 04 Sub-Regional Brasil do ACM ICPC 3 de Setembro de 04 Aquecimento Informações Gerais Este caderno contém 3 problemas; as páginas estão numeradas de a 4, não contando esta página de rosto. Verifique se o caderno está completo. A) Sobre a entrada ) A entrada de seu programa deve ser lida da entrada padrão. ) A entrada é composta de um único caso de teste, descrito em um número de linhas que depende do problema. 3) Quando uma linha da entrada contém vários valores, estes são separados por um único espaço em branco; a entrada não contém nenhum outro espaço em branco. 4) Cada linha, incluindo a última, contém exatamente um caractere final-de-linha. 5) O final da entrada coincide com o final do arquivo. B) Sobre a saída ) A saída de seu programa deve ser escrita na saída padrão. ) Quando uma linha da saída contém vários valores, estes devem ser separados por um único espaço em branco; a saída não deve conter nenhum outro espaço em branco. 3) Cada linha, incluindo a última, deve conter exatamente um caractere final-de-linha. Promoção: Patrocínio: v.

Maratona de Programação da SBC ACM ICPC 04 Problema A Mário Arquivo: mario.[c cpp java] Mário é dono de uma empresa de guarda-volumes, a Armários a Custos Moderados (ACM). Mário conquistou sua clientela graças à rapidez no processo de armazenar os volumes. Para isso, ele tem duas técnicas: Todos os armários estão dispostos numa fila e são numerados com inteiros positivos a partir de. Isso permite a Mário economizar tempo na hora de procurar um armário; Todos os armários têm rodinhas, o que lhe dá grande flexibilidade na hora de rearranjar seus armários (naturalmente, quando Mário troca dois armários de posição, ele também troca suas numerações, para que eles continuem numerados seqüencialmente a partir de ). Para alugar armários para um novo cliente, Mário gosta de utilizar armários contíguos, pois no início da locação um novo cliente em geral faz muitas requisições para acessar o conteúdo armazenado, e o fato de os armários estarem contíguos facilita o acesso para o cliente e para Mário. Desde que Mário tenha armários livres em quantidade suficiente, ele sempre pode conseguir isso. Por exemplo, se a requisição de um novo cliente necessita de quatro armários, mas apenas os armários de número, 3, 5, 6, 8 estiverem disponíveis, Mário pode trocar os armários 5 e e os armários 6 e 4 de posição: assim, ele pode alugar o intervalo de armários de até 4. No entanto, para minimizar o tempo de atendimento a um novo cliente, Mário quer fazer o menor número de trocas possível para armazenar cada volume. No exemplo acima, ele poderia simplesmente trocar os armários e 4 de posição, e alugar o intervalo de 3 até 6. Mário está muito ocupado com seus clientes e pediu que você fizesse um programa para determinar o número mínimo de trocas necessário para satisfazer o pedido de locação de um novo cliente. A primeira linha da entrada contém dois números inteiros N e L ( N L 0 5 ), indicando quantos armários são necessários para acomodar o pedido de locação do novo cliente e quantos armários estão disponíveis, respectivamente. A segunda linha contém L inteiros distintos X i ( X < X <... < X L 0 9 ), em ordem crescente, indicando as posições dos armários disponíveis. Seu programa deve produzir uma única linha, contendo um único número inteiro, indicando o número mínimo de trocas que Mário precisa efetuar para satifazer o pedido do novo cliente (ou seja, ter N armários consecutivos disponíveis). 5 6 3 4 5 6 8 5 5 3 5 6 8

Maratona de Programação da SBC ACM ICPC 04 5 6 4 5 6 7 8 0

Maratona de Programação da SBC ACM ICPC 04 3 Problema B Esquerda, Volver! Arquivo: esquerda.[c cpp java] Este ano o sargento está tendo mais trabalho do que de costume para treinar os 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. No sábado à tarde, enquanto todos os outros recrutas estão de folga, ele obrigou o recruta 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 e dar um quarto de volta na direção correspondente ao comando. Por exemplo, 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 primeira linha da entrada contém um inteiro N que indica o número de comandos emitidos pelo sargento ( N.000). 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! ). Seu programa deve produzir uma única linha, 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. 3 DDE L EE S

Maratona de Programação da SBC ACM ICPC 04 4 Problema C Fechem as Portas! Arquivo: portas.[c cpp java] Madame Beauvoir possui uma mansão onde ela recebe todos os seus descendentes (netos e bisnetos) durante as férias. Sua mansão possui exatamente N quartos (cada quarto é numerado de a N), onde N é também a quantidade de netos e bisnetos (cada descendente é também numerado de a N). Como toda criança, os descendentes de Mme. Beauvoir são bastante travessos. Todo dia é a mesma confusão: eles acordam de manhã cedo antes dela e se encontram no grande jardim. Cada descendente, um de cada vez, entra na mansão e troca o estado das portas dos quartos cujos números são múltiplos do seu identificador. Trocar o estado de uma porta significa fechar uma porta que estava aberta ou abrir uma porta que estava fechada. Por exemplo, o descendente cujo identificador é igual a 5 vai trocar o estado das portas 5, 30, 45, etc. Considerando que todas as portas estão inicialmente fechadas (todos os descendentes fecham as portas antes de descer para o jardim) e que cada descendente entra exatamente uma vez na mansão (a confusão é tão grande que não sabemos em que ordem), quais portas estarão abertas após a entrada de todos os descendentes na mansão? A única linha da entrada contém apenas um inteiro N ( N 5 0 6 ), indicando o número de portas e descendentes. Seu programa deve produzir uma única linha, contendo uma seqüência crescente de números correspondente aos identificadores dos quartos cujas portas estarão abertas após a entrada de todos os descendentes na mansão. 3 4 4