Comentário NOIC OBI 2021 – Fase 1 – Programação Nível Júnior

OBI 2021 – Fase 1 – Programação Nível Júnior

Para se preparar para a OBI, confira o nosso Roteiro de Estudos, nele você vai encontrar um direcionamento completo de como estudar!

Comentário por Anita Ramos, Lúcio Figueiredo e Leonardo Paes

Para conferir a prova na íntegra, clique aqui.

Idade de Camila

Conhecimento Prévio Necessário:

Em resumo, o problema pede como saída o segundo menor dentre três números $$a_0, a_1, a_2$$ dados. Para encontrar este número, basta analisar os seguintes três casos:

  • Caso 1: $$a_0 \geq min(a_1, a_2)$$ e $$a_0 \leq max(a_1, a_2)$$: Neste caso, $$a_0$$ é o segundo maior número.
  • Caso 2: $$a_1 \geq min(a_0, a_2)$$ e $$a_1 \leq max(a_0, a_2)$$: Neste caso, $$a_1$$ é o segundo maior número.
  • Caso 3: Se nenhum dos casos acima são verdadeiros, então $$a_2$$ é o segundo maior número.

Para analisar estes três casos, podemos utilizar a estrutura condicional If/Else if/Else e o operador lógico and.

Complexidade: $$O(1)$$.

Plano de Internet

Conhecimento Prévio Necessário:

Para resolvermos o problema, basta utilizar um loop de $$1$$ até $$n$$. Na iésima iteração, somamos $$x$$ em uma variável auxiliar que guarda os megabytes acumulados até o iésimo mês, chamada $$acumulado$$. Também devemos subtrair $$m$$ dessa mesma variável: A quantidade de megabytes gastos por João nesse mês. Por fim, somamos $$x$$ nela (referente ao mês $$n+1$$) e imprimimos essa variável.

Complexidade: $$O(n)$$. Segue o código, para melhor compreensão do problema:

Torneio de Tênis

Conhecimento Prévio Necessário:

Para esse problema, podemos utilizar a estrutura de repetição $$for()$$ para realizar a leitura da entrada, ou seja, as letras $$V$$ e $$P$$. Como o problema se trata de contar a quantidade de vitórias (caractere $$V$$) na entrada, cada vez que lermos a letra $$V$$, somamos 1 à variável $$res$$. Após realizar toda a leitura, basta checar à qual intervalo dado no enunciado para a divisão dos grupos a variável $$res$$ se encaixa e imprimir a resposta correspondente. Para isso usamos o comando $$if$$ que checa:

  • Se $$res=0$$, ou seja, o participante não será convidado a continuar o treinamento;
  • Se $$res=1$$ ou $$res=2$$, ou seja, o participante ficará no grupo 3;
  • Se $$res=3$$ ou $$res=4$$, ou seja, o participante ficará no grupo 2;
  • Se $$res=5$$ ou $$res=6$$, ou seja, o participante ficará no grupo 1;

Complexidade: $$O(1)$$. Segue o código para melhor compreensão do problema: