1025 - Onde está o Mármore?

Existem diversas formas de se resolver este problema, veja qual é a melhor para você.

Descrição

Solução

O problema consiste de ordenar todos os mármores em ordem crescente e ir respondendo qual a primeira posição de um determinado número de mármore.

Para solucioná-lo, podemos usar duas diferentes abordagens:

  • Ordenar o vetor de mármores e fazer cada consulta com pesquisa binária, com complexidade O(log n) de tempo para cada consulta

  • Acumular todos os valores de mármore em um vetor auxiliar, usando-o para contar quantos mármores de cada tem na entrada (ver Counting sort) para poder fazer as consultas em tempo O(1) (mas com gasto de espaço proporcional ao maior N possível)

Alternativa 1 - Pesquisa Binária

Complexidade

Notação assintótica

Tempo

O(log n)

Espaço

O(1)

Alternativa 2 - Contando os mármores

É importante notar que não sabemos o valor máximo m que N pode assumir.

Complexidade

Notação assintótica

Tempo

O(1)

Espaço

O(m)

Last updated

Was this helpful?