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:
