Submeter | Todas submissőes | Melhores | Voltar |
HIST - Histórico de Comandos |
Uma interface por linha de comando (ILC) é um dos tipos de interface humano-computador mais antigos que existem. Uma ILC permite a interação com o software através de um interpretador de comandos, sendo normalmente acessível em um terminal (ou janela) de texto. A vantagem de um interpretador de comandos é que ele permite que o usuário opere o sistema usando apenas o teclado. Ainda hoje em dia, em que estamos acostumados com interfaces gráficas sofisticadas, muitos aplicativos e sistemas operacionais incluem algum tipo de interface por linha de comando, e muitos usuários ainda preferem usá-la para grande parte das tarefas.
Um dos recursos mais úteis de um interpretador de comandos é o histórico de comandos.
Quando um comando é digitado e executado, ele é colocado no histórico de comandos do
terminal. O comando pode ser exibido novamente no terminal apertando a tecla `↑'; a tecla
Enter
executa o comando novamente quando o comando está sendo exibido no terminal. Todos
os comandos executados são guardados no histórico: pressionar a tecla `↑' duas vezes exibe o
penúltimo comando executado, pressioná-la três vezes exibe o antepenúltimo comando, e assim
sucessivamente.
Por exemplo, se o histórico inicial é (A, B, C, D)
, para repetir o comando C
basta pressionar
duas vezes a tecla `↑'. O histórico será então atualizado para (A, B, C, D, C)
. Nesse ponto, para
repetir o comando A
será necessário pressionar cinco vezes a tecla `↑'; o histórico será atualizado
para (A, B, C, D, C, A)
. Nesse ponto, para repetir mais uma vez o comando A
basta pressionar
uma vez a tecla `↑'; o histórico será atualizado para (A, B, C, D, C, A, A)
.
Leandro é administrador de sistemas e usa freqüentemente o interpretador de comandos para gerenciar remotamente os servidores que administra. Em geral, ele precisa apenas repetir comandos que já havia digitado antes. Enquanto estava trabalhando em um servidor, ele teve uma curiosidade: quantas vezes ele precisa pressionar a tecla `↑' para executar uma determinada seqüência de comandos? Ele sabe quais são as posições no histórico dos comandos que ele necessita executar, mas não sabe resolver esse problema. Por isso, pediu que você fizesse um programa que respondesse à pergunta dele.
Entrada
A entrada é composta de vários casos de teste. A primeira linha de cada caso de teste contém
um número inteiro N
, indicando o número de comandos que Leandro deseja executar
(1 ≤ N ≤ 1.000)
. A segunda linha de um caso de teste contém N
inteiros P1
, P2
, . . . , PN
, que indicam
as posições dos comandos no histórico (1 ≤ Pi ≤ 1.000.000)
no momento inicial, na ordem em
que os comandos devem ser executados. Ou seja, o primeiro comando que deve ser executado
está inicialmente na posição P1
do histórico; depois deve ser executado o comando que está
inicialmente na posição P2
no histórico, e assim por diante, até PN
, que é a posição inicial do
último comando que deve ser executado. Note que pode haver Pi = Pj
As posições são dadas em função do número de vezes que a tecla `↑' deve ser pressionada:
um comando na posição 5
necessita que a tecla `↑' seja pressionada cinco vezes antes de aparecer
no terminal (note que à medida que comandos vão sendo executados, a posição de um dado
comando no histórico pode mudar).
O final da entrada é indicado por N = 0
.
A entrada deve ser lida da entrada padrão.
Saída
Para cada caso de teste, seu programa deve imprimir apenas uma linha, contendo o número de vezes que Leandro precisa pressionar a tecla `↑' para executar todos os comandos.
A saída deve ser escrita na saída padrão.
Exemplo
Entrada: 3 2 5 3 4 2 1 4 3 5 1 2 3 4 5 4 1 3 1 3 0 Saída 13 16 25 9
Adicionado por: | Wanderley Guimarăes |
Data: | 2007-10-11 |
Tempo limite: | 1.349s |
Tamanho do fonte: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Linguagem permitida: | Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO PERL6 PY_NBC SCALA TCL |
Origem: | Primeira fase da Maratona de Programação - 2007 |
hide comments
2015-02-23 20:26:52 Vinícius Olino
alguém possui alguns casos de teste alem destes? já testei com uns 7~8 casos e todos estăo corretos, mas continuo recebendo resposta errada. |
|
2014-05-16 23:26:25 Stehling [UniHell]
Unimontes |
|
2011-07-21 10:34:26 Jonathan Ramos [UNIR]
Năo estou conseguindo visualizar as imagens |
|
2011-05-07 14:56:41 Wyllian
Até corrigirem a página, baixem o PDF que ai dá pra ver corretamente o exercício |
|
2011-03-28 11:01:33 Vanderlei Arruda
Năo está carregando as imagens. |
|
2010-11-29 23:26:50 Matheus Pacheco [UFMG]
Nem eu |
|
2010-10-24 17:21:51 Thiago Luiz G. da Silva [FATEC-SO]
Năo estou conseguindo visualizar as imagens |