Editorial for Compromising Painters
Submitting an official solution before solving the problem yourself is a bannable offence.
Türkçe
Eğer Mecem olmasaydı, Ozi'nin toplam boyayabileceği alan herhangi bir köşeden başlayarak boyayabileceği tüm 2x2'lik alanların toplamına eşit olurdu. Alanların birbirine kesişimleri olmadığına dikkat edin. Bu tür alanların sayısını \(\mathbf{\lfloor \frac{N}{2} \rfloor * \lfloor \frac{M}{2} \rfloor}\) ile bulabiliriz.
Fakat Mecem her adımında bir kareyi boyayarak Ozi'nin boyayabileceği alanlardan bir tanesini engelleyebilir. Önceki hesaplamamızda sadece birbiriyle kesişmeyen boyayabileceği maksimum alanı bulduğumuz için Mecem bir adımı ile 1'den fazla 2x2'lik alanın boyanmasını engelleyemez.
Bu şekilde Ozi, Mecem'in engellemesinden dolayı, toplamda boyayabileceği alanların yarısı kadar (tekse de yarısının üste yuvarlanması kadar) 2x2'lik alan boyayabilir. Bu alanların dışındaki tüm alanları da en sonda Mecem boyar.
English
If Mecem wasn't there, the area that Ozi could paint would be equal to the area that he can paint by painting every 2x2 starting from a corner. See that there is no intersection between the 2x2 areas. The number of 2x2 areas can be found with the formula \(\mathbf{\lfloor \frac{N}{2} \rfloor * \lfloor \frac{M}{2} \rfloor}\).
However, Mecem can block Ozi by painting a 1x1 square each one of her turns. Since there are no intersections on the total number of 2x2 squares Ozi can paint, Mecem cannot block two 2x2 areas at the same time
Because Mecem is blocking half of the areas, Ozi can paint half of the total area he can paint. If the total number of 2x2 is odd, he can also paint the last remaining 2x2 square. All of the other squares can be painted by Mecem in the very end.
Örnek Çözüm / Sample Solution
#include <bits/stdc++.h>
using namespace std;
int main(){
long long d;
cin >> d;
for(long long t=0;t<d;t++){
long long n,m;
cin >> n >> m;
long long a=n/2,b=m/2,c=n%2,d=m%2;
long long ozi=(a*b+1)/2*4;
long long mecem=n*m-ozi;
if(ozi>mecem) cout << "ozi\n";
else if(ozi<mecem) cout << "mecem\n";
else cout << "yes\n";
}
return 0;
}