Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Gabarito Semana 9
Escreva um pseudocódigo que, dados n inteiros com valores entre 1 e k, pré-processe
esses inteiros e então responda perguntas da forma:
“dados a, b, quantos dos n inteiros estão no intervalo [a , b]?”
A resposta a esse tipo de perguntas deve ser feita em tempo O(1) e o
pré-processamento deve ser feito em tempo O(n+k). O nome para cada um dos
métodos deve ser ResponderQuery e PreProcessar, respectivamente.
Resposta do aluno Renato Banzai levemente modificada
PreProcessar(A, n, k)
1 para i ← 0 até k faça //Bastou usar o primeiro trecho de COUNTING-SORT (aula 10)
2 C[i] ← 0 //Θ(k)
3 para j ← 1 até n faça
4 C[A[j]] ← C[A[j]] + 1 //Θ(n)
5 para i ← 1 até k faça
6 C[i] ← C[i] + C[i − 1] //Θ(k)
7 devolva C // Total: Θ(n + k)
ResponderQuery(A, n, k, a, b)
1. C = PreProcessar(A, n, k) //Θ(n+k)
2. devolva (C[b] - C[a-1]) //Θ(1)
Observação: Assume 1 ≤ a ≤ b ≤ k e que o C é indexado a partir do 0.

Mais conteúdos dessa disciplina