6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao...

18
6o Contest Noturno 31 de Agosto de 2013 Sevidor CD-MOJ: http://moj.naquadah.tk Sele¸ ao de Problemas: Bruno C´ esar Ribas Lembretes: ´ E permitido consultar livros, anota¸c˜oes ou qualquer outro material impresso durante a prova. Acorre¸c˜ao´ e automatizada, portanto, siga atentamente as exigˆ encias da tarefa quanto ao formato da entrada e sa´ ıda de seu programa. Deve-se considerar entradas e sa´ ıdas padr˜ ao. Procure resolver o problema de maneira eficiente. Se o tempo superar o limite pr´ e-definido,asolu¸c˜aon˜ ao ´ e aceita. As solu¸c˜oess˜ ao testadas com outras entradas al´ em das apresentadas como exemplo dos problemas. Teste seu programa antes de submetˆ e-lo. A cada problema detectado (erro de compila¸c˜ ao, erro em tempo de execu¸c˜ ao, solu¸c˜aoincorreta,formata¸c˜ ao imprecisa, tempo excedido ... ),h´apenaliza¸c˜ ao de 20 minutos. O tempo ´ e crit´ erio de desempate entre duas ou mais equipes com a mesma quantidade de problemas resolvidos. 1

Transcript of 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao...

Page 1: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno31 de Agosto de 2013

Sevidor CD-MOJ:

http://moj.naquadah.tk

Selecao de Problemas:

Bruno Cesar Ribas

Lembretes:

• E permitido consultar livros, anotacoes ou qualquer outro material impresso durante a prova.

• A correcao e automatizada, portanto, siga atentamente as exigencias da tarefa quanto ao formato da entrada e saıda deseu programa. Deve-se considerar entradas e saıdas padrao.

• Procure resolver o problema de maneira eficiente. Se o tempo superar o limite pre-definido, a solucao nao e aceita. Assolucoes sao testadas com outras entradas alem das apresentadas como exemplo dos problemas.

• Teste seu programa antes de submete-lo. A cada problema detectado (erro de compilacao, erro em tempo de execucao,solucao incorreta, formatacao imprecisa, tempo excedido . . . ), ha penalizacao de 20 minutos. O tempo e criterio dedesempate entre duas ou mais equipes com a mesma quantidade de problemas resolvidos.

1

Page 2: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno

31 de Agosto de 2013

Sumario

1 Problema A: Tanque Cheio? 3

2 Problema B: Robo Colecionador 4

3 Problema C: O Problema da Parada 6

4 Problema D: Contest Hall Preparation 10

5 Problema E: Grade Horaria 12

6 Problema F: Logotipo publicitario na TV da Vovo 13

7 Problema G: Popularidade no Facebook 15

8 Problema H: Desfile dos Patos 16

9 Problema I: Wind Waker 17

2

Page 3: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

1 Problema A: Tanque Cheio?Arquivo: tanque.[c|cpp|pas]

Depois de verificar os recibos de sua viagem de carro pela Europa neste verao, voce per-cebeu que os precos de gasolina variaram entre as cidades que visitou. Talvez voce pudesseter economizado algum dinheiro se fosse um pouco mais esperto sobre o local onde completouseu combustıvel?

Para ajudar outros turistas (e economizar seu proprio dinheiro da proxima vez), voce querescrever um programa para encontrar a forma mais barata de viajar entre cidades, enchendoseu tanque no caminho. Assumimos que todos os carros usam a mesma unidade de combustıvelpor unidade de distancia, e iniciam com um tanque de gasolina vazio.

Especificacao da Entrada

A primeira linha de entrada e formada por 1 ≤ n ≤ 1000 e 0 ≤ m ≤ 10000, o numero decidades e estradas. Entao segue uma linha com n inteiros 1 ≤ pi ≤ 100, onde pi e o precodo combustıvel na i-esima cidade. Entao seguem m linhas com tres inteiros 0 ≤ u, v < n e1 ≤ d ≤ 100, dizendo que ha uma estrada entre u e v com extensao d. Em seguida, uma linhacom o numero 1 ≤ q ≤ 100, referente ao numero de consultas, e q linhas com tres inteiros1 ≤ c ≤ 100, s e e, onde c e a capacidade de combustıvel do veıculo, s e a cidade de partida,e e e o destino.

Especificacao da Saıda

Para cada consulta, exiba o preco da viagem mais barata a partir de s ate e, usando umcarro com a capacidade dada, ou “impossible” se nao ha nenhuma maneira de sair de s echegar em e com um dado carro.

Exemplo de entrada

5 5

10 10 20 12 13

0 1 9

0 2 8

1 2 1

1 3 11

2 3 7

2

10 0 3

20 1 4

Exemplo de saıda

170

impossible

3

Page 4: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

2 Problema B: Robo ColecionadorArquivo: robo.[c|cpp|java|pas]

Um dos esportes favoritos na Robolandia e o Rali dos Robos. Este rali e praticado emuma arena retangular gigante de N linhas por M colunas de celulas quadradas. Algumas dascelulas estao vazias, algumas contem figurinhas da Copa (muito apreciadas pelas inteligenciasartificiais da Robolandia) e algumas sao ocupadas por pilastras que sustentam o teto daarena. Em seu percurso os robos podem ocupar qualquer celula da arena, exceto as quecontem pilastras, que bloqueiam o seu movimento. O percurso do robo na arena durante orali e determinado por uma sequencia de instrucoes. Cada instrucao e representada por umdos seguintes caracteres: ‘D’, ‘E’ e ‘F’, significando, respectivamente, “gire 90 graus para adireita”, “gire 90 graus para a esquerda” e “ande uma celula para a frente”. O robo comeca orali em uma posicao inicial na arena e segue fielmente a sequencia de instrucoes dada (afinal,eles sao robos!). Sempre que o robo ocupa uma celula que contem uma figurinha da Copa elea coleta. As figurinhas da Copa nao sao repostas, ou seja, cada figurinha pode ser coletadauma unica vez. Quando um robo tenta andar para uma celula onde existe uma pilastra elepatina, permanecendo na celula onde estava, com a mesma orientacao. O mesmo tambemacontece quando um robo tenta sair da arena.

Dados o mapa da arena, descrevendo a posicao de pilastras e figurinhas, e a sequenciade instrucoes de um robo, voce deve escrever um programa para determinar o numero defigurinhas coletadas pelo robo.

Entrada

A entrada contem varios casos de teste. A primeira linha de um caso de teste contemtres numeros inteiros N , M e S (1 ≤ N,M ≤ 100, 1 ≤ S ≤ 5× 104 ), separados por espacosem branco, indicando respectivamente o numero de linhas e o numero de colunas da arena eo numero de instrucoes para o robo. Cada uma das N linhas seguintes da entrada descreveuma linha de celulas da arena e contem uma cadeia com M caracteres. A primeira linha queaparece na descricao da arena e a que esta mais ao Norte; a primeira coluna que aparece nadescricao de uma linha de celulas da arena e a que esta mais a Oeste.

Cada celula da arena pode conter um dos seguintes caracteres:

‘.’ - celula normal;

‘*’ - celula que contem uma figurinha da Copa;

‘#’ - celula que contem uma pilastra;

‘N’, ‘S’, ‘L’, ‘O’ - celula onde o robo inicia o percurso (unica na arena).

A letra representa a orientacao inicial do robo (Norte, Sul, Leste e Oeste, respectivamente).A ultima linha da entrada contem uma sequencia de S caracteres dentre ‘D’, ‘E’ e ‘F’,

representando as instrucoes do robo.O ultimo caso de teste e seguido por uma linha que contem apenas tres numeros zero

separados por um espaco em branco.

Saıda

Para cada rali descrito na entrada seu programa deve imprimir uma unica linha contendoum unico inteiro, indicando o numero de figurinhas que o robo colecionou durante o rali.

4

Page 5: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

Exemplo

Entrada:

3 3 2

***

*N*

***

DE

4 4 5

...#

*#O.

*.*.

*.#.

FFEFF

10 10 20

....*.....

.......*..

.....*....

..*.#.....

...#N.*..*

...*......

..........

..........

..........

..........

FDFFFFFFEEFFFFFFEFDF

0 0 0

Saıda:

0

1

3

5

Page 6: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

3 Problema C: O Problema da ParadaArquivo: parada.[c|cpp|java|pas]

O Problema da Parada (The Halting Problem) e um problema de decisao classico daCiencia da Computacao que consiste, basicamente, em determinar se um dado programasempre vai parar (ou seja, terminar sua execucao) para uma dada entrada arbitraria ou se vaiexecutar infinitamente. Alan Turing provou, em 1936, que e impossıvel resolver o problemada parada generalizando para qualquer par programa-entrada. Neste problema, porem, dadaa descricao de uma linguagem simples, um programa escrito nessa linguagem e uma entradapara esse programa, voce deve determinar se o programa dado para com a entrada dada e,em caso positivo, qual a saıda produzida.

Esta linguagem so trabalha com numeros inteiros de 0 a 999 (inclusive). Sendo assim, osucessor de 999 e 0, e o antecessor de 0 e 999. Alem disso, ela possui dez variaveis (R0 a R9),sendo que a R0 sempre e atribuıdo o valor de chamada do programa (ou seja, o parametrode entrada) e a R9 e sempre atribuıdo o valor de saıda (o retorno). No inıcio da execucaodo programa, e atribuıdo o valor 0 a todas as variaveis, com excecao de R0 que recebe oparametro de entrada.

As operacoes basicas sao atribuicao (MOV), soma (ADD), subtracao (SUB), multiplicacao(MUL), divisao inteira (DIV) e resto da divisao inteira (MOD). Todas essas operacoes tem asintaxe COMANDO OPERANDO1,OPERANDO2 (sem espacos entre a vırgula e os operan-dos), onde COMANDO e uma dessas operacoes, OPERANDO1 e uma das 10 variaveis (R0 aR9) e OPERANDO2 pode ser uma das 10 variaveis ou um valor inteiro (entre 0 e 999). Todasas operacoes modificam o valor de OPERANDO1, sendo assim MOV R4,100 e o equivalentea atribuir o valor 100 a R4, enquanto que MUL R3,R8 e o equivalente a multiplicar R3 porR8 e atribuir o resultado a R3. A operacao DIV, assim como a MOD, retornam 0 (zero) seOPERANDO2 for 0 ou se a variavel equivalente tiver valor 0. Ou seja, DIV R4,0 e o equi-valente a MOV R4,0. Por divisao inteira, entendemos a parte inteira do quociente da divisao(sem a parte fracionaria). Por exemplo, a divisao inteira de 7 por 2 e 3 (sendo o resto 1).

Existem seis comandos de fluxo de decisao: IFEQ (se igual), IFNEQ (se diferente), IFG(se maior), IFL (se menor), IFGE (se maior ou igual) e IFLE (se menor ou igual). A sintaxede todos eles e COMANDO OPERANDO1,OPERANDO2 (sem espacos entre a vırgula e osoperandos), onde OPERANDO1 e OPERANDO2 podem ser variaveis (R0 a R9) ou valoresinteiros (entre 0 e 999). Assim, o comando IFEQ R4,123 e o equivalente a testar se R4 e iguala 123. Caso a condicao testada seja verdadeira, o programa continua a executar normalmentea linha subsequente ao comando de decisao. Caso a condicao seja falsa, o programa passa aexecutar a linha subsequente ao ENDIF mais proximo. Todos os comandos de decisao devemter um comando ENDIF correspondente.

Finalmente, existem os comandos CALL e RET, ambos com a sintaxe COMANDO OPE-RANDO, onde OPERANDO e uma variavel (R0..R9) ou valor direto (entre 0 e 999). O co-mando CALL chama o proprio programa novamente, passando OPERANDO como parametrode entrada, ou seja, atribuindo o valor de OPERANDO a variavel R0. Ja RET termina aexecucao do programa, retornando o valor de OPERANDO como o resultado de saıda. Aultima linha do programa sempre sera um comando RET. Observe que, caso o programachame a si mesmo atraves do comando CALL, quando a execucao voltar, o valor de R9 vaiestar alterado com o valor retornado pelo programa. Note tambem que todas as variaveis(R0..R9) sao locais, ou seja, uma chamada subsequente ao programa nao pode alterar os

6

Page 7: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

valores guardados nas variaveis da instancia anterior, com excecao, naturalmente, do valor deR9 que recebe o retorno da instancia chamada.

O exemplo a seguir ilustra um programa que calcula o fatorial de um numero.

1a linha: Verifica se o valor de R0 vale 0, caso positivo, executa a proxima linha, caso contrario,pula para a 4a linha (ENDIF mais proximo).

2a linha: Retorna 1 como saıda do programa.

3a linha: Marca o fim do bloco de decisao iniciado na primeira linha.

4a linha: Atribui o valor de R0 a R1 (R1← R0).

5a linha: Diminui 1 de R1 (R1← R1− 1).

6a linha: Chama o programa passando R1 como parametro de entrada.

7a linha: Guarda o valor de R9 (retornado pela chamada anterior) em R2 (R2← R9)

8a linha: Multiplica o valor de R2 por R0 (R2← R2 ∗R0)

9a linha: Retorna o valor de R2 como saıda do programa.

7

Page 8: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

A tabela seguir traz um resumo dos comandos para referencia:

Entrada

A entrada contem varios casos de teste. Cada caso de teste se inicia com dois inteiros,L e N , representando respectivamente o numero de linhas do programa (1 ≤ L < 100) e ovalor do parametro de entrada do programa (0 ≤ N < 1000). As L linhas seguintes contemo programa. Pode-se assumir que ele esta sempre sintaticamente correto de acordo com asregras definidas acima. Todos os comandos (bem como o nome das variaveis) so conteraoletras maiusculas. O final da entrada e marcado pelo caso em que L = N = 0 e nao deve serprocessado.

Saıda

Para cada caso de teste, seu programa deve produzir uma linha contendo um inteiro querepresenta o valor de saıda (retorno) para a entrada N dada, ou um asterisco (*) no caso deo programa nunca terminar.

8

Page 9: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

Exemplo

Exemplo de entrada

9 6

IFEQ R0,0

RET 1

ENDIF

MOV R1,R0

SUB R1,1

CALL R1

MOV R2,R9

MUL R2,R0

RET R2

2 123

CALL R0

RET R0

0 0

Saıda para o exemplo de entrada

720

*

9

Page 10: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

4 Problema D: Contest Hall PreparationArquivo: contest.[c|cpp|java|pas]

Before the ACM-ACPC regional contest, the site director and the volunteers were verybusy preparing for the contest. One of their tasks is to assign a table for each team suchthat no two teams from the same university are adjacent to each other. The site directordecided not to waste his time doing this task and asked the judges to do it. The judgesthought this could be a good problem to be used in the contest problems set. As they werevery busy preparing for the contest, the judges decided to solve part of the problem and askthe contestants to solve the rest. The judges will generate a number of layouts for the teamsassignment to the tables and will ask the contestants to write a program to check whethereach of these layouts is valid or not.

If a layout is not valid the program should count how many different universities have atleast two of their teams sitting adjacent to each other. Well, you may use those solutions forthe next year’s contest”,

said by the chief judge Ahmed Aly to the site director.The contest hall can be represented as a 2D grid of N rows with M cells in each row. Each

cell in the grid is either occupied by a team or empty. There could be up to 8 teams adjacentto a single team.

A team may have less than 8 adjacent teams if it is seated next to a hall edge or some ofits adjacent cells are empty.

For example, in the layout shown in the following figure, team E has 7 adjacent teams,named A, B, C, D, F, G and H, while the adjacent teams to team A are B, D and E.

Input

Your program will be tested on one or more test cases. The first line of the input willbe a single integer T, the number of test cases (1≤T≤100). Followed by the test cases, eachone starts with a line containing 2 integers separated by a single space N and M (1≤N,M≤100) representing the dimensions of the hall, followed by N lines each line contains Mintegers separated by a single space, representing the tables assignment in this row. Eachinteger represents the university ID of the team assigned to this table or -1’ if it is empty. Alluniversities IDs are positive integers not greater than 100.

10

Page 11: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

Output

For each test case, print on a single line integer, the number of different universities havingat least two of their teams adjacent to each other.

Sample

Sample Input

3

3 3

1 2 3

2 2 2

1 1 1

3 3

1 2 3

3 -1 1

2 -1 2

3 3

1 2 3

-1 1 5

1 2 4

Sample Output

2

0

1

11

Page 12: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

5 Problema E: Grade HorariaArquivo: grade.[c|cpp|java|pas]

Professor Toddy e um simpatico e calmo coordenador do curso Bacharelado em Chef deCozinha (BCC) que, como em todo fim de semestre, comeca a montar a grade horaria dasdisciplinas para o proximo semestre. Professor Toddy e famoso por sempre tentar colocar asdisciplinas em horarios que os alunos mais desejam, e isso acontece principalmente para asdisciplinas que sao optativas. Para entender melhor as demandas dos alunos o professor passaum questionario. No questionario, o professor lista todas as disciplinas optativas que poderaoser ofertadas (e seus respectivos horarios), oferecendo uma coluna para o aluno selecionar aoptativa que deseja cursar no proximo semestre ou para veta-la. E permitido fazer apenasduas escolhas no questionario, ou seja, cada aluno pode selecionar uma optativa e vetar outra,vetar duas optativas ou selecionar duas optativas. O professor Toddy garante que todos osalunos terao pelo menos um de seus desejos atendidos.

Antigamente ele mesmo dava conta de montar a grade de optativas e atender o que pro-metia, mas com o crescimento do curso e a grande quantidade de alunos tem se tornadoimpossıvel. Assim, ele resolveu contratar voce para fazer um programa que recebe os pedidosdos alunos e responde se e possıvel montar uma grade de optativas para o proximo semestre.

Entrada

A entrada e composta de diversas instancias. Cada instancia comeca com um inteiro n(1 ≤ n ≤ 1000), indicando a quantidade de questionarios recebidos pelo professor Toddy.Cada uma das proximas n linhas contem dois nomes de disciplina indicando a preferenciade cada aluno. Um nome de disciplina e uma sequencia de letras [a-z] com no maximo 20letras. Quando o nome de uma disciplina e iniciado por “!” significa que o aluno deseja vetara disciplina, caso contrario ele deseja selecionar.

O final da entrada e dado por n = 0.

Saıda

Para cada instancia, voce devera imprimir um identificador Instancia k, onde k e onumero da instancia atual. Na linha seguinte voce deve imprimir sim se for possıvel atenderpelo menos um desejo de cada aluno e nao caso contrario.

Apos cada instancia, seu programa deve imprimir uma linha em branco.

Exemplo

Entrada

2

!tap !itc

mc !tap

4

mc bd

!mc !bd

mc !bd

!mc bd

Saıda

Instancia 1

sim

Instancia 2

nao

Curiosidades

tap - Topicos em Arroz Parboi-lizado

mc - Metodologia Culinaria

bd - Banco de Doces

itc - Introducao as Tecnicas deChurrasco

12

Page 13: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

6 Problema F: Logotipo publicitario na TV da VovoArquivo: logotipo.[c|cpp|pas]

A Vove esta preocupada com seu netinho que passa o dia inteiro assistindo televisao, poisela percebeu que durante o desenho animado, aparece um logotipo publicitario na tela e elanao esta muito contente com isso.

O netinho e a Vovo gravaram em seu videocassete alguns programas e agora desejamcontar quantas vezes o logotipo aparece durante o desenho animado para decidir se reclamamcom a emissora por propaganda abusiva.

A Vovo nao quer assistir ao vıdeo mais uma vez para fazer a contagem e tao pouco desejaque seu netinho o faca. Por isso ela contratou voce para descobrir quantas vezes o logotipoaparece em cada vıdeo gravado.

Tarefa

Dada uma matriz representando o logotipo que a Vovo deseja contar, e dadas K matrizes,cada uma representando uma imagem do vıdeo gravado, seu programa deve contar quantasvezes a matriz do logotipo aparece na sequencia de K matrizes. A matriz do logotipo e semprede dimensoes menores que as K matrizes do vıdeo.

Entrada

A entrada possui varios casos de teste. Cada caso de teste inicia com a descricao da matrizque representa o logotipo, seguida de K matrizes, cada uma representando uma das imagensdo vıdeo que a Vovo gravou.

A primeira linha contem dois inteiros X e Y representando respectivamente o numero delinhas e colunas da matriz do logotipo (1 ≤ X ≤ 10 e 1 ≤ Y ≤ 10). As X linhas seguintesda entrada contem cada uma Y inteiros, descrevendo o valor de cada ponto da matriz dologotipo.

Apos a descricao do logotipo, sao descritas as matrizes que representam as diversas imagensdo vıdeo gravado. A primeira linha da descricao possui tres inteiros K, M e N . OndeK representa o numero de matrizes de dimensao M × N que serao lidas ( 1 ≤ K ≤ 300,1 ≤ M ≤ 320, 1 ≤ N ≤ 240). Cada pixel e um numero pi com 0 ≤ pi ≤ 255. O final daentrada e indicado por X = Y = 0.

Saıda

Para cada caso de teste, o seu programa deve produzir um numero na saıda. A primeiralinha da saıda deve conter um identificador do conjunto de teste, no formato “Logotipon”, onde n e numerado sequencialmente a partir de 1. A seguir deve aparecer um numerorepresentando quantas vezes o logotipo aparece no vıdeo gravado. Apos o numero deixe umalinha em branco.

Exemplo de Entrada

(proxima pagina)

13

Page 14: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

Entrada

2 2

1 1

2 3

3 5 5

0 0 0 2 3

0 1 1 0 0

1 3 3 0 1

3 0 0 0 2

0 0 0 1 1

0 3 0 0 0

0 0 0 1 1

0 9 0 2 3

2 3 0 0 0

1 1 8 0 0

0 1 1 1 0

0 1 0 1 0

0 1 0 1 1

0 1 0 1 3

0 1 1 1 0

1 2

9 9

2 4 4

2 9 9 2

3 3 3 8

8 7 9 9

9 9 2 9

2 6 1 3

9 2 8 9

0 3 4 0

0 0 9 9

0 0

Saıda

Logotipo 1

1

Logotipo 2

4

14

Page 15: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

7 Problema G: Popularidade no FacebookArquivo: popularidade.[c|cpp|pas|java]

Hoje em dia todos estao conectados, participam do Facebook, publicam suas fotos noInstagram, seus vıdeos no Youtube, e assim por diante. Ate mesmo sistemas como GPS hojese baseiam em redes sociais, tornando tudo mais divertido (e talvez mais difıcil de entender,mas isso e outra conversa). Ser popular no Facebook e quase uma necessidade. Uma pessoacom menos de 700, 800 amigos pode ser considerado quase como um paria nessa nova realidade.

Talvez por isso algumas pessoas costumam exagerar quando dizem o numero de amigosque possuem. Considere uma comunidade com N pessoas, e para cada uma delas, considereque sabemos o numero de amigos que cada pessoa diz ter na comunidade. Sua tarefa nesteproblema e determinar se de fato e possıvel que todos os membros da comunidade estejamfalando a verdade. Lembre que uma pessoa no pode ser amiga de si mesma, e duas pessoasno podem ser amigas varias vezes.

Entrada

A entrada e composta por diversas instancias e termina com final de arquivo (EOF). Aprimeira linha de cada instancia contem um inteiro N (1 ≤ N ≤ 105). A segunda linha possuiN inteiros, ai (0 ≤ ai ≤ 105), separados por um espaco em branco, correspondendo ao numerode amigos que a pessoa i diz ter na comunidade.

Saıda

Para cada instancia imprima, em uma unica linha, possivel se e possıvel que todos osmembros da comunidade estejam falando a verdade, ou impossivel caso contrario.

Exemplo

Entrada

3

1 1 1

3

2 2 2

Saıda

impossivel

possivel

15

Page 16: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

8 Problema H: Desfile dos PatosArquivo: desfile.[c|cpp|pas]

Em uma pacata cidade do interior um curioso desfile acontece toda manha as seis horas. Odesfile dos Patos acontece na avenida mais badalada da cidade (a Av. Tupi). Esse desfile e taoreconhecido que pelo menos uma vez por semana a televisao local filma o evento e transmitepara a micro-regiao. Os patos sempre saem para seu desfile alimentados e percorrem a avenidacomo verdadeiros reis da cidade. Nao e por acaso que a cidade possui o Trevo do Patinhocom a estatua do mais reconhecido Pato que viveu nessa cidade, o famoso Pato Branco depolainas.

Durante o desfile dessa manha, Bozena, percebeu que varios Patos possuem uma mechaem suas penas. Essas mechas sao um filete de alguma cor. Marciano, um aluno de umaescola local, percebeu que uma cor e a majoritaria (mais da metade dos patos tem essa cor)no conjunto de todas as cores nas mechas, porem, Patrick (colega de Marciano) nao conseguedecidir qual e a cor majoritaria, algumas cores parecem ter a maioria por pouca diferenca epor isso e difıcil saber qual e a majoritaria. Entao Patrick o desafiou a escrever um programade computador que dada uma sequencia das cores que aparecem nos patos durante o desfilediga qual e a cor majoritaria.

Entrada

A entrada possui varios casos de teste. A primeira linha de um caso de teste possui umnumero N (1 ≤ N ≤ 5000 )que representa quantos patos foram observados. A segunda linhade um caso de teste possui N inteiros, ai ( 1 ≤ ai ≤ 105), separados por um espaco em branco,correspondendo ao codigo da cor que estava na mecha do Pato. A entrada termina quandoN = 0.

Saıda

Para cada caso de teste imprima, em uma unica linha, o codigo da cor que e a majoritariano desfile.

Exemplo

Entrada

5

1 0 1 2 1

13

1 1 1 3 3 2 2 3 3 3 2 3 3

Saıda

1

3

16

Page 17: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

9 Problema I: Wind WakerArquivo: wwaker.[c|cpp|pas|java]

The world is in danger once again, and Link is the hero who will save us! In order to savethe world, Link must travel overseas and collect some legendary items.

The sea can be described as an infinite 2D plane with a Cartesian coordinate system, inwhich the point (0,0) denotes the center of the sea. Also, the cardinal directions are definedas usual:

Link must use his boat to travel. Unfortunately, Link’s boat has a limitation: the boatcan only move in the same direction as the Wind. So, for instance, if the wind is blowingNorth, Link can only travel to the North. If the wind is not blowing at all, Link doesn’t moveat all, too.

Fortunately, Link has the wind waker, the magical baton. With this baton, Link canconduct the Wind’s Requiem, a mystical melody that allows Link to control the wind. Eachtime the wind waker is used, Link can either make the wind stop blowing (this action is repre-sented by the letter X) or make the wind blow in one of the 8 cardinal directions (North (N),South (S), East (E), West (W), Northeast (NE), Southeast (SE), Southwest (SW), Northwest(NW)).

Link must go to the position (x2, y2) and stop there, to collect a legendary item. Rightnow, Link is at the position (x1, y1) and the wind is not blowing. You must find a trajectoryfrom (x1, y1) to (x2, y2). A trajectory consists of a sequence of uses of the wind waker atcertain positions. For example, to go from (0,0) to (1,1), a possible trajectory is:

1. At point (0,0), make the wind blow north;

2. At point (0,1), make the wind blow east;

3. At point (1,1), make the wind stop blowing.

17

Page 18: 6o Contest Noturno - moj.naquadah.com.br · (sem a parte fracion aria). Por exemplo, a divis~ao inteira de 7 por 2 e 3 (sendo o resto 1). Existem seis comandos de uxo de decis~ao:

6o Contest Noturno 31 de Agosto de 2013

You must find a trajectory that:

• Minimizes the number of times Link uses the wind waker;

• In case of a tie, minimizes the total distance traveled;

• In case of a tie, uses the lexicographically smaller sequence of wind direction changes.Use E < N < NE < NW < S < SE < SW < W < X. For example, a trajectorythat changes the wind to N , then to SW , then to W is preferable over a trajectory thatchanges the wind to N , then to W , then to E, because (N,NW,W ) is lexicographicallysmaller than (N,W,E) (because N = N and NW < W ).

Entrada

The input file consists of one or more test cases. Each test case is described by a linecontaining four integers x1, y1, x2, y2 (|x1|, |y1|, |x2|, |y2| ≤ 5× 104, (x1, y1) 6= (x2, y2)).

The file ends with EOF.

Saıda

For each test case, print a line containing K, the number of times the wind waker is used.In the next K lines print xi yi D, meaning that the wind waker must be used to change thewind direction to D at the position (xi, yi). Print the coordinates rounded to exactly twofractional digits, and use D = S,N,W,E, SE, SW,NE,NW or X. Print the events in theorder they occur in the trajectory.

After the K lines, print the total distance traveled, rounded to exactly three fractionaldigits. Print a blank line after each test case. Check the sample output.

Exemplo

Entrada

0 0 0 1

0 0 3 2

Saıda

2

0.00 0.00 N

0.00 1.00 X

1.000

3

0.00 0.00 E

1.00 0.00 NE

3.00 2.00 X

3.828

18