Um mercadinho utiliza leitores de código de barras que, além do preço, identificam o número de dias restantes para o vencimento de um produto. O sistema compara essa quantidade com uma lista ordenada de prazos críticos que definem níveis de risco e ações a serem tomadas.
Considere que a lista de prazos críticos (em dias até o vencimento), ordenada crescente, é:
\text { Dias Para Validade }=[0,1,3,5,7,10,15,20]
com índices
[0,1,2,3,4,5,6,7] .
A lista paralela de ações é:
Índic&ção Correspondente
0 Produto vencido - retirar imediatamente
1 Último dia! Retirar da prateleira
2 Ofertar com 50% de desconto
3 Ofertar com 30% de desconto
4 Sinalizar com etiqueta vermelha
5 Destacar em promoção
6 Reorganizar para frente da prateleira
7 Sem ação - validade segura
Um funcionário escaneia um produto cuja validade restante é:
x=12 \text { dias. }
Utilizando a busca de Fibonacci determine como o sistema deve:
  • Verificar se x está na lista de prazos críticos.
  • Se não estiver, identificar o maior valor na lista que seja \leq x.
  • Determinar a ação correspondente ao índice encontrado.

Passo 1

O enunciado pede para usar a busca de Fibonacci em uma lista ordenada de prazos críticos
\text{Dias Para Validade} = [0,1,3,5,7,10,15,20]
para achar x=12 dias. Como 12 não está na lista, precisamos achar o maior elemento \leq12 e, em seguida, retornar a ação correspondente ao seu índice na lista paralela de ações.

Passo 2

Primeiro geramos números de Fibonacci até achar o menor F_k tal que F_k \ge n, onde n=8 (tamanho da lista).
Os Fibonacci são
(F_0,F_1,F_2,F_3,F_4,F_5,F_6,F_7)=(0,1,1,2,3,5,8,13).
O primeiro \,F_k\ge8 é F_7=13. Então inicializamos
k = 7,\quad \text{offset} = -1.

Passo 3

Iteração 1 k=7:
Calculemos
\text{mid} = \min(\text{offset}+F_{k-2},\,n-1) = \min(-1 + F_5,\,7) = \min(-1 + 5,\,7) =4.
Comparamos o valor na posição 4: lista[4] =7. Como 7 < 12, descartamos tudo até 4, atualizamos
\text{offset} = 4,\quad k = k-1 = 6.

Passo 4

Iteração 2 k=6:
\text{mid} = \min(4 + F_{4},\,7) = \min(4 + 3,\,7) =7.
lista[7] =20. Como 20 > 12, descartamos a direita de 7, atualizamos
k = k-2 = 4
(e \text{offset} permanece 4).

Passo 5

Iteração 3 k=4:
\text{mid} = \min(4 + F_{2},\,7) = \min(4 + 1,\,7) =5.
lista[5] =10. Como 10 < 12, descartamos até 5, atualizamos
\text{offset} = 5,\quad k = k-1 = 3.

Passo 6

Iteração 4 k=3:
\text{mid} = \min(5 + F_{1},\,7) = \min(5 + 1,\,7) =6.
lista[6] =15. Como 15 > 12, descartamos a direita de 6, atualizamos
k = k-2 = 1.
Agora k\le1, encerramos. Não encontramos 12 exatamente, e o maior índice cuja lista[index] \le12 é
\text{offset} = 5,\quad \text{valor} = 10.

Passo 7

O índice final é 5. Consultando a lista de ações no índice 5, temos: 5\to \text{Destacar em promoção}.çã

Resposta

Destacar em promoção

Exercícios relacionados