OBOI 2023 - Fase 1 - Nível Júnior
Se você quiser se preparar para a OBI, não deixe de conferir o Roteiro de estudos de informática, e também a página de informática do NOIC, com todos nossos materiais.
Para conferir a prova na íntegra, clique aqui.
Gohan
Comentário escrito por Murilo Maeda
A resolução é bem simples: basta comparar a soma das notas. Já que ambas as somas são divididas pelo mesmo valor, se a soma de um é maior que a do outro, a média também será. O problema é que os valores de média podem ir até , que é maior do que o limite do int. Para resolver isso, basta mudar para long long int. Note também que se você quiser comparar as médias (fazendo a divisão), é necessário usar long double, já que apenas com double a divisão retorna um número com casas o suficiente para o código retornar que as duas médias são iguais, mesmo que elas sejam diferentes.
Clique aqui para conferir o código
Óculos de Enzo
Comentário escrito por Estela Baron
Conhecimento prévio necessário:
Depois de ler a entrada (, e ), podemos calcular a pontuação de cada óculos e comparar se já existe alguma pontuação menor. Para fazer isso, temos que somar o valor absoluto da diferença de com o valor absoluto de . Observe que, para obter o valor absoluto, podemos utilizar a função abs() - por exemplo: abs(5-7) retorna o valor de 2. Além disso, podemos atualizar a resposta com o mínimo entre o que já está na resposta e a nova pontuação. Para realizar isso, usamos a função min() - por exemplo: min(8,99) retorna o valor 8.
Assim, basta utilizar um for() para ler todo par e , calcular a nova pontuação e atualizar a resposta se necessário.
Ao final, basta imprimir a resposta. Atenção para não esquecer de pular linha!!! (cout << endl; ou cout <<'\n';)
Detalhes da implementação: a resposta é inicializada como para indicar que não foi nenhum óculos. Portanto, é necessário verificar se a resposta é diferente de para utilizar o min() - afinal todas as pontuações são não negativas. Outra alternativa para não ter que verificar o caso do seria inicializar a melhor pontuação com um valor extremamente grande, mas cuidado para não exceder o limite do inteiro ou deixar o valor muito baixo.
Observação: para ler a entrada, temos que declarar a variável como inteiro - ex: int N; - e atribuir o valor do input. Podemos utilizar o comando scanf("%d", &N); ou cin >> N; . Da mesma forma, para imprimir, podemos fazer ou printf("%d\n", N); ou cout << N << endl; ou cout << N << '\n';.
Cuidado: '\n' é para pular linha, mas podemos também declarar uma variável n: int n; - que é diferente de int N;
Clique aqui para conferir o código
Matriz Maluca
Comentário escrito por Caique Paiva
Conhecimentos Prévios Necessários:
Vamos criar duas variáveis, e . Em cada jogada, nos é dado dois valores , então, adicionamos os números que estão na linha e os valores que estão na coluna , sem repetir o valor de , para a variável Lobo, se for a jogada do lobo, ou para a variável Enzo, se for a vez do enzo, e então, trocamos o valor de cada um desses números que adicionamos por 0.
Depois de todas as operações, vemos se Enzo é maior que Lobo: Se sim, imprimimos Enzo. Se Enzo = Lobo, então imprimos empate, e caso nenhum dos anteriores aconteça, imprimimos Lobo.
Clique aqui para conferir o código