Editorial for Los Aguacateros


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: erik_piza

La idea se reduce a una condición muy sencilla: cada árbol ocupa exactamente 2 casillas, así que el terreno debe tener un número par de casillas.

Solución

El terreno tiene N × M casillas.

Como cada árbol ocupa exactamente 2 casillas, para llenar completamente el terreno necesitamos que:

\[ N \times M \]

sea divisible entre 2.

Esto ocurre exactamente cuando al menos una de las dos dimensiones es par.

Por lo tanto:

  • Si N es par → Si
  • Si M es par → Si
  • Si ambas son impares → Ni modo compa

No importa cómo se acomoden los árboles: si una dimensión es par, podemos colocar todos los árboles en parejas de casillas a lo largo de esa dimensión.

Complejidad

Para cada caso de prueba solamente hacemos una operación módulo:

  • Tiempo: O(1)
  • Memoria: O(1)

Código en C++

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;

    while (T--) {
        long long N, M;
        cin >> N >> M;

        if (N % 2 == 0 || M % 2 == 0)
            cout << "Si\n";
        else
            cout << "Ni modo compa\n";
    }

    return 0;
}
Ejemplo

Para 2 × 9:

\[ 2 \times 9 = 18 \]

Como 18 es par, se puede llenar → Si.

Para 7 × 11:

\[ 7 \times 11 = 77 \]

Como 77 es impar, no se puede dividir completamente en árboles de 2 casillas → Ni modo compa.


Comments

There are no comments at the moment.