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