Вы находитесь на странице: 1из 7

OBI2012 Caderno de Tarefas

Modalidade Programao Nvel 1, Fase 2


26 de maio de 2012 A PROVA TEM DURAO DE 4 HORAS

Promoo:

Patrocnio:

v1.0

Olimpada Brasileira de Informtica OBI2012

Instrues
LEIA ATENTAMENTE ESTAS INSTRUES ANTES DE INICIAR A PROVA
Este caderno de tarefas composto por 6 pginas (no contando a folha de rosto), numeradas de 1 a 6. Verique se o caderno est completo. A prova deve ser feita individualmente. proibido consultar a Internet, livros, anotaes ou qualquer outro material durante a prova. permitida a consulta ao help do ambiente de programao se este estiver disponvel. As tarefas tm o mesmo valor na correo. A correo automatizada, portanto siga atentamente as exigncias da tarefa quanto ao formato da entrada e sada de seu programa. No implemente nenhum recurso grco nas suas solues (janelas, menus, etc.), nem utilize qualquer rotina para limpar a tela ou posicionar o cursor. As tarefas no esto ordenadas, neste caderno, por ordem de diculdade; procure resolver primeiro as questes mais fceis. Preste muita ateno no nome dos arquivos fonte indicados nas tarefas. Solues na linguagem C devem ser arquivos com suxo .c; solues na linguagem C++ devem ser arquivos com suxo .cc ou .cpp; solues na linguagem Pascal devem ser arquivos com suxo .pas; solues na linguagem Java devem ser arquivos com suxo .java e a classe principal deve ter o mesmo nome do arquivo fonte; e solues na linguagem Python devem ser arquivos com suxo .py. Para problemas diferentes voc pode escolher trabalhar com linguagens diferentes, mas apenas uma soluo, em uma nica linguagem, deve ser submetida para cada problema. Ao nal da prova, para cada soluo que voc queira submeter para correo, copie o arquivo fonte para o seu diretrio de trabalho ou disquete, conforme especicado pelo seu professor. No utilize arquivos para entrada ou sada. Todos os dados devem ser lidos da entrada padro (normalmente o teclado) e escritos na sada padro (normalmente a tela). Utilize as funes padro para entrada e sada 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 funo padro, como por exemplo Scanner, BueredReader, BueredWriter e System.out.println em Python: read,readline,readlines,print,write Procure resolver o problema de maneira eciente. Na correo, ecincia tambm ser levada em conta. As solues sero testadas com outras entradas alm das apresentadas como exemplo nas tarefas.

Olimpada Brasileira de Informtica OBI2012

Carnaval
Nome do arquivo fonte: carnaval.c, carnaval.cpp, carnaval.pas, carnaval.java, ou carnaval.py O Carnaval um feriado celebrado normalmente em fevereiro; em muitas cidades brasileiras, a principal atrao so os desles de escolas de samba. As vrias agremiaes deslam ao som de seus sambas-enredos e so julgadas pela liga das escolas de samba para determinar a campe do Carnaval. Cada agremiao avaliada em vrios quesitos; em cada quesito, cada escola recebe cinco notas que variam de 5,0 a 10,0. A nota nal da escola em um dado quesito a soma das trs notas centrais recebidas pela escola, excluindo a maior e a menor das cinco notas. Como existem muitas escolas de samba e muitos quesitos, o presidente da liga pediu que voc escrevesse um programa que, dadas as notas da agremiao, calcula a sua nota nal num dado quesito.

Entrada
A entrada contm uma nica linha, contendo cinco nmeros Ni (1 i 5), todos com uma casa decimal, indicando as notas recebidas pela agremiao em um dos quesitos.

Sada
Seu programa deve imprimir uma nica linha, contendo um nico nmero com exatamente uma casa decimal, a nota nal da escola de samba no quesito considerado.

Restries
5.0 Ni 10.0

Exemplos
Entrada 6.4 8.2 8.2 7.4 9.1 Sada 23.8

Entrada 10.0 10.0 5.0 5.0 10.0

Sada 25.0

Olimpada Brasileira de Informtica OBI2012

Costa
Nome do arquivo fonte: costa.c, costa.cpp, costa.pas, costa.java, ou costa.py A Nlognia um pas tropical, com muitas belezas naturais internacionalmente famosas; dentre elas, encontramse as belas praias que compem o arquiplago do pas, que todo vero recebem milhes de turistas estrangeiros. O Ministrio do Turismo da Nlognia est preparando o pas para a chegada dos turistas, mas para fazer seu planejamento, precisa saber a extenso da costa nlognica. Para isso, ele gerou um mapa que divide o territrio nacional em vrios quadrados, que podem ser ocupados por gua ou por terra; considera-se que um quadrado parte da costa nlognica se ele um quadrado ocupado por terra que tem um lado em comum com um quadrado ocupado por gua. Na gura abaixo, (a) mostra um trecho do mapa gerado e (b) mostra os quadrados do trecho dado que so costa.

Terra Mar

Costa

(a)

(b)

Como a Nlognia um pas muito grande, o ministro do turismo pediu que voc escrevesse um programa que, dado o mapa da Nlognia, determina a extenso da costa nlognica.

Entrada
A primeira linha da entrada contm dois inteiros M e N indicando, respectivamente, o nmero de linhas e o nmero de colunas do mapa. Cada uma das M linhas seguintes contm N caracteres: um caractere . indica que aquele quadrado do territrio ocupada por gua; um caractere # indica que aquele quadrado do territrio ocupada por terra. Considere que todo o espao fora da rea do mapa ocupado por gua.

Sada
Seu programa deve imprimir uma nica linha contendo um nico inteiro, indicando quantos quadrados do territrio fazem parte da costa da Nlognia.

Restries
1 M, N 1000

Olimpada Brasileira de Informtica OBI2012

Exemplos
Entrada 5 5 ..... ..#.. .###. ..#.. ..... Sada 4

Entrada 10 10 .......... .....###.. ....#####. .#...##... .......... .......##. .##....... ..##...... ..###..... ..#####...

Sada 22

Olimpada Brasileira de Informtica OBI2012

Guerra por territrio


Nome do arquivo fonte: guerra.c, guerra.cpp, guerra.pas, guerra.java, ou guerra.py Tomblia do Oeste e Tomblia do Leste travaram uma guerra durante 50 anos. O motivo da guerra era o tamanho do territrio de cada pas. Pelo bem da populao dos dois pases, os governos resolveram fazer um tratado para nalizar a guerra. O tratado consiste em fazer um diviso justa, e certamente contnua, do territrio. Eles resolveram pedir sua ajuda para calcular o ponto de diviso do territrio. Depois de tantos anos de guerra, os pases no podem lhe pagar uma viagem para ver previamente o territrio que ser dividido. Ao invs disso, eles prepararam uma lista a1 , a2 , . . . , aN de inteiros que indicam o tamanho de cada seo do territrio. A seo a1 vizinha da seo a2 que por sua vez vizinha da seo a3 e assim por diante. Os governos querem uma diviso em uma seo k de tal forma que a1 + a2 + + ak = ak+1 + ak+2 + + aN . Sua tarefa dada uma lista de inteiros positivos a1 , a2 , . . . , aN , determinar a seo k tal que soma dos comprimentos das sees a1 at ak igual a soma dos comprimentos das sees ak+1 at aN .

Entrada
A primeira linha da entrada contm um inteiro N indicando o nmero de sees do territrio. A segunda linha da entrada contm N inteiros a1 , a2 , . . . , aN separados por um nico espao que indicam os comprimentos das sees.

Sada
Seu programa deve imprimir uma nica linha contendo um inteiro que indica a seo do territrio onde acontecer a diviso. Nota: garantido que sempre existe uma diviso que satisfaz as condies dos pases.

Informaes sobre a pontuao


Em um conjunto de casos de teste que totaliza 50 pontos, N 1000.

Restries
1 N 105 . 1 ai 100, para i = 1, 2, . . . , N .

Exemplos
Entrada 4 5 3 2 10 Sada 3

Olimpada Brasileira de Informtica OBI2012

Entrada 9 2 8 2 8 4 4 4 4 4

Sada 4

Вам также может понравиться