OBI 2024 – Fase 2 – Programação Nível Júnior

OBI 2024 – Fase 2 – Programação 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.

Avenida

Comentário por Henrique Vianna

Perceba que há duas rotas que podem ser escolhidas:

  • Ir ao último ponto de ônibus anterior à escola e andar o que faltar, ou seja, $$D \% 400$$ metros.
  • Ir ao primeiro ponto de ônibus posterior à escola e “voltar” andando, ou seja, $$400 – D \% 400$$ metros.

Portanto, a distância mínima que Luiza precisará andar será simplesmente o mínimo entre esses dois valores.

Segue o código:


#include <bits/stdc++.h>
using namespace std;
int main()
{
int d; cin >> d;
cout << min(d % 400, 400 – d % 400) << '\n';
}

view raw

Avenida.cpp

hosted with ❤ by GitHub

Alfabeto

Comentário por Murilo Maeda Kataoka

Conhecimento necessário

Para esse problema, só precisamos de uma estrutura que seja capaz de nos dizer se um certo caracter está ou não no alfabeto. Uma estrutura que faz exatamente isso é o map, da STL do C++. Com ele, basta passarmos pelos caracteres do alfabeto alienígena e marcar $$map[caracter] = true$$. Depois, quando estivermos passando pela mensagem, basta ver se o map do caracter em questão foi ou não ativado.

Segue o código:


#include<bits/stdc++.h>
using namespace std;
int main()
{
cin.tie(0)->sync_with_stdio(0);
int N,K; cin >> N >> K;
string alfabeto, mensagem; cin >> alfabeto >> mensagem;
map<char,bool> marc;
for(char cur : alfabeto)
{
marc[cur] = true;
}
bool eh = true;
for(char cur : mensagem)
{
if(!marc[cur])
eh = false;
}
if(eh) cout << "S\n";
else cout << "N\n";
}

view raw

Alfabeto.cpp

hosted with ❤ by GitHub

Atletismo

Escrito por João Pedro Castro

Conhecimentos Prévios Necessários:

Esse é um problema clássico de vetores. Vamos chamar o i-ésimo atleta a cruzar a linha de chegada de $$x$$, perceba que no momento que recebemos o $$x$$ de um $$i$$ específico já sabemos exatamente sua posição no ranking, seja $$rank_j$$ o rank do corredor de número $$j$$, temos que $$rank_x = i$$. Agora vamos receber um por um e imprimir o vetor $$rank$$ no final. Um detalhe é perceber que precisamos fazer o vetor 1-indexado, já que a numeração dos corredores vão de $$1$$ até $$N$$.

Clique aqui para ver o código