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, metros.
- Ir ao primeiro ponto de ônibus posterior à escola e "voltar" andando, ou seja, metros.
Portanto, a distância mínima que Luiza precisará andar será simplesmente o mínimo entre esses dois valores.
Segue o código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <bits/stdc++.h> | |
using namespace std; | |
int main() | |
{ | |
int d; cin >> d; | |
cout << min(d % 400, 400 - d % 400) << '\n'; | |
} |
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 . 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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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"; | |
} |
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 , perceba que no momento que recebemos o de um específico já sabemos exatamente sua posição no ranking, seja o rank do corredor de número , temos que . Agora vamos receber um por um e imprimir o vetor no final. Um detalhe é perceber que precisamos fazer o vetor 1-indexado, já que a numeração dos corredores vão de até .