[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 PA
de 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
2
e 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
soma
de determinadointervalo
em 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ão
igual a2
.
Determine a soma dos3
primeiros 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 de1
em1
degrau. -
Utilizaremos as seguintes
equações
para calcularmos o valorinicial
efinal
daPA
somaPA
= Utilizar for()
valorFinal
= ( ( somaPA . 2 / n ) + n - 1 ) / 2
valorInicial
= valorFinal - n + 1
Travei.