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.
