OBI 2025 – Fase 1 Nível 1

Pizzaria

Solução escrita por João Pedro Castro

Conhecimentos necessários:

Se a quantidade de pizzas grandes é G e a de pizzas pequenas é P, então a quantidade de fatias total é 8  \cdot G + 4 \cdot P. Porém, o enunciado pede para subtrairmos 2 fatias, uma para Larissa e outra para sua mãe, ou seja temos que imprimir o valor 8  \cdot G + 4 \cdot P - 2.

Clique aqui para ver o código completo.

Fila

Solução escrita por Julia Tiosso

Conhecimentos necessários:

O problema se resume a saber, para cada aluno, se existe alguém com altura maior ou igual à sua frente (direita, no vetor).

Para a primeira subtarefa, podemos passar por todos os alunos e, para cada um, verificar todos os outros à sua frente: se encontrarmos alguém maior ou igual, então ele está escondido. A complexidade desse algoritmo é O(N^2), suficiente para N \leq 1000.

Agora, para um algoritmo em O(N), podemos perceber que é suficiente comparar cada aluno apenas com a maior altura à sua frente. Para isso, percorremos o vetor da direita para a esquerda, guardando em uma variável max_a qual foi a maior altura de um aluno até o momento e, então, há dois casos:

  • O aluno não está escondido, ou seja, sua altura é maior do que max_a.
  • Caso contrário, o aluno está escondido, então incrementamos a resposta em um.

Clique aqui para ver o código completo.

Café com Leite

Solução escrita por João Pedro Castro

Conhecimentos necessários:

Chame de L a quantidade de leite que iremos usar para encher a xícara. Fica claro que C = D + L (quantidade total de café com leite é café + leite), ou seja, L = C - D. Agora, só precisamos ver que se esse valor L está entre A e B, que é equivalente a dizer que ele é maior ou igual à A e menor ou igual à B. Podemos fazer essa checagem com um if usando o operador && (and).

Clique aqui para ver o código completo.