Comentário NOIC OBI 2023 - Fase 2 - Programação Nível 1

OBI 2023 - Fase 2 - Programação Nível 1

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

Prefixos

Comentário por Henrique Vianna

Para resolver esse exercício, basta checarmos os pares de caracteres em posições correspondentes, da esquerda para a direita. Se encontrarmos um par de caracteres diferentes, achamos a nossa resposta. Se isso nunca ocorrer, a resposta será simplesmente min(n, m), uma vez que uma string é um prefixo da outra.

Clique aqui para conferir o código

Grupos de Trabalho

Comentário por Henrique Vianna

Para resolver esse problema, basta marcarmos em qual grupo cada um dos alunos está e depois passar pelas M + D condições, checando se elas estão satisfeitas. Para cada condição do primeiro tipo, se os dois alunos estiverem em grupos diferentes, aumentamos a resposta em um. Da mesma forma, para cada condição do tipo dois, se os dois alunos estiverem no mesmo grupo, devemos adicionar um à resposta.

Clique aqui para conferir o código

Distintos

Comentário por Murilo Maeda

Conhecimento prévio necessário:

Para esse problema, vamos utilizar a técnica de two pointers. A variável l representa o índice mais à esquerda do segmento atualmente considerado e a variável r representa o índice mais à direita do intervalo atualmente considerado. Como os valores têm um limite, basta manter um vetor que guarda a frequência dos valores para saber se há valores repetidos. Se quando tentamos expandir o segmento para a direita encontrarmos um número que já está no nosso segmento, calculamos o tamanho do segmento atual e checamos se ele é a melhor resposta até agora. Depois disso, movemos o limite esquerdo para a direita até que o valor que tentamos adicionar só apareça uma vez. A resposta vai ser o maior tamanho obtido durante todo o processo.

Complexidade: Passamos por cada índice uma vez com cada ponteiro, então a complexidade é O(N)

Clique aqui para conferir o código