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: