Submeter | Todas submissőes | Melhores | Voltar |
CCODIGO - Cadeado de código |
Um cadeado possui um sistema de código para ser aberto ao invés de uma chave. O cadeado contém uma sequência de rodas. Cada roda possui as 26 letras do alfabeto inglês (a..z), em ordem. Se você move uma roda para cima, a letra que ela mostra muda para a próxima letra do alfabeto (se a letra mostrada for 'z', então ela muda para 'a'). Se você move uma roda para baixo, ela muda para para a letra anterior do alfabeto (se a letra mostrada for 'a', ela muda para 'z').
Também é possível mover qualquer subsequência contígua de rodas para a mesma direção com apenas um movimento. Isso tem o mesmo efeito que mover todas as rodas da subsequência para aquela direção, mas executando apenas um movimento.
O cadeado abre quando a roda mostra uma determinada sequência de letras. Inicialmente, todas as rodas mostram a letra 'a'. Você quer saber qual o menor número de movimentos necessários para abrir o cadeado.
Entrada
A entrada contém vários casos de teste. Um caso de teste é descrito em exatamente uma linha contendo uma string não-vazia com no máximo 1000 letras minúsculas. A string representa a sequência secreta de letras que abre o cadeado.
O último caso de teste é seguido de uma linha contendo um único asterisco.
Saída
Para cada caso de teste, imprima uma linha contendo um único inteiro, o menor número de movimentos que abre o cadeado.
Exemplo
Entrada: abcxyz abcdefghijklmnopqrstuvwxyz aaaaaaaaa zzzzzzzzz zzzzbzzzz * Saída: 5 25 0 1 3
Adicionado por: | Wanderley Guimarăes |
Data: | 2011-03-07 |
Tempo limite: | 0.109s |
Tamanho do fonte: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Linguagem permitida: | Todas exceto: ASM64 CLOJURE ERL FSHARP PERL6 PY_NBC SCALA TCL |
Origem: | Final Sul-Americana da Maratona de Programação da ACM 2009 |
hide comments
2014-04-04 01:36:43 Marcos Kawakami
Vocę precisa considerar também a distância entre as letras. Mudar 'b' para 'z' custa dois movimentos (b -> a -> z). |
|
2014-04-04 01:04:19 Frederico Miranda Brandão Alves
O exemplo tem algo estranho. O último caso de teste é "zzzzbzzzz", e supostamete a quantidade mínima de movimentos seria 3. Mas existe uma forma de fazer isso com dois movimentos: "zzzzbzzzz" -> (1 movimento) "zzzzzzzzz" -> (1 movimento) "aaaaaaaaa" (Resposta) Existe um erro no enunciado ou năo estou conseguindo entender o problema direito? |