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

OBI 2023 - Fase 1 - 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.

VAR

Comentário escrito por Arthur Lobo

Conhecimento prévio necessário:

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.

O enunciado nos diz que o campo é um retângulo 16 \times 8 e que o centro do lado inferior dele é (0,0) (posição do juiz); portando, os 4 vértices que formam o retângulo são: (-8,0), (8,0), (-8,8), (8,8). Agora basta checar se o ponto (X,Y) dado na entrada está dentro (ou na borda) do retângulo!

Para fazer isso, basta que as duas seguintes condições sejam satisfeitas:

  • A coordenada X esteja entre os limites esquerdo e direito: -8 \le X \le 8.
  • A coordenada Y esteja entre os limites inferior e superior: 0 \le Y \le 8.

Lembrando, no C++, não podemos fazer 'if(-8 <= X <= 8)', ao invés disso temos que fazer 'if(-8 <= X && X <= 8)' ou então if(-8 <= X and X <= 8)'.

Clique aqui para conferir o código

Estoque

Comentário escrito por Caique Paiva

Conhecimento prévio necessário:

Vamos construir uma matriz com o estoque. Vamos guardar uma variável auxiliar res = 0. Se queremos pegar um produto de m[i][j] e m[i][j] > 0, significa que temos esse produto no estoque, então nós vendemos ele, adicionamos um em res, e tiramos um de m[i][j]. No final, basta retornar res.

Clique aqui para conferir o código

Subsequências

Comentário escrito por Caique Paiva

Conhecimento prévio necessário:

Chame os dois vetores de a, b. A ideia é criar um ponteiro no segundo vetor. Chame ele de j, e inicialize ele como 0, e percorra o vetor a. Se a[i] == b[j], então faça j++. Se j == m, significa que b é subsequência de a. Caso contrario, b não é subsequência.

Veja o seguinte exemplo para ficar mais claro:

1 2 3 4 5

2 3 5

Primeiro, começamos com i = 0, j = 0. Primeiro 1 \neq 2, logo só aumentamos o i, então temos i = 1, j = 0, agora, temos que a[1] == b[0], logo, aumentamos tanto o i, quanto o j, e i = 2, j = 1. Agora, a[2] == b[1], então aumentamos tanto o i quanto o j, e i =3, j = 2. Agora, a[3] \neq b[2], então aumentamos só o i, e temos i = 4, j = 2. Agora, a[4] == b[2], então, aumentamos o i e o j. Agora, como j == m, retornamos sim, porque achamos uma subsequência.

Clique aqui para conferir o código