Editorial for Los Aguacateros
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
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
Nes par →Si - Si
Mes 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