[AJUDA] Ansiedade por NÃO conseguir resolver Algoritmos SIMPLES
contexto: Estou estudando para a OBI e tenho resolvido algoritmos de todas as edições. No entanto, estou enfrentando o seguinte problema: consigo conceber a solução logicamente, mas ao tentar implementá-la, travo completamente. Já se passaram 4 horas, estou tentando resolver esse algoritmo, que é bastante simples, e não consigo. Isso tem causado uma ansiedade intensa, a ponto de não sentir fome mais.
Escada perfeita - OBI2006
Uma construtora, durante a criação de um parque temático, encontrou no terreno um conjunto de vários pilhas de cubos de pedra. Ao invés de pagar pela remoção dos cubos de pedras, um dos arquitetos da empresa achou interessante utilizar as pedras para decoração do parque, determinando que as pedras fossem re-arranjadas no formato de “escada“ . Para isso, os funcionários deveriam mover alguns cubos para formar os degraus das escadas. Só que o arquiteto decidiu que, entre uma pilha c outra de pedras deveria haver exatamente uma pedra de diferença, formando o que ele chamou de escada perfeita. O exemplo abaixo mostra um conjunto de cinco pilhas de pedras encontradas e as cinco pilhas como ficaram após a arrumação em escada perfeita.
Dada uma sequência de pilhas de cubos de pedras com suas respectivas alturas, você deve determinar o número mínimo de pedras que precisam ser movidas para formar uma escada perfeita com exatamente o mesmo número de pilhas de pedras encontrado inicialmente (ou seja, não devem ser criadas ou eliminadas pilhas de pedras). O degrau mais baixo da escada deve sempre estar do lado esquerdo.
Entrada
A entrada contém um único conjunto de testes, que deve ser lido do dispositivo de entrada padrão (normalmente o teclado). A primeira linha contém um inteiro N que indica o número de pilhas de pedras. A segunda linha contém N números inteiros que indicam a quantidade de cubos de pedras em cada uma das pilhas, da esquerda para a direita.
Saída
Seu programa deve imprimir uma única linha, contendo um único inteiro: o número mínimo de cubos de pedras que devem ser movidos para transformar o conjunto de pilhas em uma escada perfeita, conforme calculado pelo seu programa. Caso não seja possível efetuar a transformação em escada perfeita, imprima como resultado o valor -1.
Exemplos
| Entrada 5 5 4 5 4 2 | Saída 5 |
| Entrada 6 9 8 7 6 5 4 | Saída 9 |
| Entrada 2 1 5 | Saída -1 |
Minha Solução
Sabemos que a escada perfeita aumenta de 1 em 1. Isso significa que ela é uma PAde razão 1.
Um pouco sobre Progressão Aritmética - PA
Uma prograssão aritmética é uma sequência númerica em que cada termo, partir do segundo é a soma do termo anterior com uma constante R
-
Exemplo de PA
{2, 3, 4, 5, 6} O primeiro termo é o
2e arazãoé1. -
Fórmula
`an = a1 + (n - 1).r` {2, 3, 4, 5, 6} = 2 + (3...n - 1) . 1 -
Soma de PA
Para encontrarmos a
somade determinadointervaloem uma PA podemos utilizar afórmula`Sn = n/2 . (a1 + an)`n= Tamanho intervalo.a1= Posição do inicial na PA.an= Posição do intervalo na PA.
Exemplo de soma:
Dada a seguinte
PA= {2, 4, 6, 8, 10}, derazãoigual a2.
Determine a soma dos3primeiros valores dessaPA.Valores= {2, 4, 6}
n= 3
a1= 2
a3= 6
s= 3/2 . (2 + 6) -> 12
Lógica da Solução
-
Sabemos quanto vale o
n(o numero de pilhas) a partir dele conseguimos calcular a soma dessaPA, basta realizar umloop. -
Sabemos que a razão é
1. Pois a escada deve aumentar de1em1degrau. -
Utilizaremos as seguintes
equaçõespara calcularmos o valorinicialefinaldaPAsomaPA= Utilizar for()
valorFinal= ( ( somaPA . 2 / n ) + n - 1 ) / 2
valorInicial= valorFinal - n + 1
Travei.