SPOJ Problem Set (obi)
831. Penta!
Problema: PENTA
|
O técnico Luiz Felipe Scolari (Felipão) foi um dos grandes
responsáveis pela conquista do quinto título brasileiro na Copa do
Mundo. Contrariando muitos críticos, alterou o esquema tático do time,
apostou em jogadores que não tinham garantida uma boa condição física
para o torneio, e administrou com um misto de rigor e paternalismo as
personalidades muitas vezes difíceis dos jogadores. Estrategista
competente, Felipão planejou meticulosa e longamente toda a campanha.
Felipão planejou até mesmo o desfile em carro aberto do Corpo de
Bombeiros, na volta da seleção ao país. Tendo recebido a informação
que o local mais alto do carro possibilitava apenas a permanência de
um número limitado de jogadores, e sabendo que os jogadores iriam
querer estar o maior tempo possível no palanque, Felipão determinou,
para cada quarteirão do percurso, qual jogador necessariamente deveria
estar presente no palanque. No primeiro quarteirão Beletti deveria
estar presente no palanque, no segundo quarteirão Cafu, no terceiro
quarteirão Denílson, no quarto Edmilson, e assim por diante. No
entanto, ele não determinou qual jogador presente ao palanque deveria
descer para dar lugar ao novo jogador, quando o palanque estivesse com
sua lotação máxima. Como subir e descer do palanque é cansativo (e
mesmo um tanto arriscado, considerando a altura), os jogadores
decidiram procurar a sua ajuda para descobrir como obedecer às ordens
do técnico quanto à permanência do jogador no palanque no momento
estipulado, mas de forma a minimizar a troca de jogadores
no palanque.
Tarefa
Com o dinheiro recebido como prêmio pela conquista da Copa do Mundo
os jogadores decidiram contratar os seus serviços. Você deve escrever
um programa que determine o número mínimo de trocas
de jogadores no palanque, conhecendo a lista formulada por Felipão.
Considere que inicialmente o palanque está vazio, e, até chegar à
sua lotação máxima, um novo jogador sobe sem que nenhum outro desça
(ou seja, não ocorre troca). Quando o palanque está com
lotação máxima, antes que um jogador possa subir um outro deve descer
(caracterizando uma troca). Os jogadores sempre desejam
permanecer no palanque o maior tempo possível (ou seja, nenhum desce
sem que haja necessidade de um novo jogador ascender ao palanque).
Entrada
A entrada é composta de vários conjuntos de teste. A primeira linha
de um conjunto de teste contém dois números inteiros N e
P, que indicam respectivamente o número de quarteirões do
trajeto e o número de jogadores que cabem simultaneamente no palanque
do Carro de Bombeiros. Os jogadores são identificados por inteiros de
1 a 23. As N linhas
seguintes contêm cada uma um inteiro positivo J,
indicando o jogador que deve estar presente no palanque no
N-ésimo quarteirão do trajeto. O final da entrada é
indicado quando N = P = 0.
Saída
Para cada conjunto de teste da entrada seu programa deve produzir
três linhas. A primeira linha identifica o conjunto de teste, no
formato “Teste n”, onde n é numerado a
partir de 1. A segunda linha deve conter o número mínimo
de trocas de jogadores, conforme determinado pelo seu programa. A
terceira linha deve ser deixada em branco. A grafia mostrada no
Exemplo de Saída, abaixo, deve ser seguida rigorosamente.
Exemplos
Entrada:
4 2
1
2
3
1
13 3
10
23
10
11
7
8
23
11
9
10
5
7
11
0 0
Saída:
Teste 1
1
Teste 2
6
Restrições
0 ≤ N ≤ 10000 (N = 0 apenas para indicar o fim da entrada)
0 ≤ P ≤ N (P = 0 apenas para indicar o fim da entrada)
1 ≤ J ≤ 23
| Adicionado por: | Wanderley Guimarães |
| Data: | 2006-04-29 |
| Tempo limite: | 1s
|
| Tamanho do fonte: | 50000B |
| Linguagem permitida: | Todas exceto: AWK CLOJ ERL F# GO JS PERL 6 SCALA SED TCL |
| Origem: | Olimpiada Brasileira de Informatica 2002 - Seletiva |