Problemin Müəllifi: Al Kaosar Hüseyn
Təqdim edən: Al Kaosar Hüseyn
Həll:
Əsas müşahidələr:
dərəcə döndürmə koordinatları dəyişdirir və işarələri tərsinə çevirir, yəni əgər siz hazırda -dəsinizsə, onda əks saat yönündə dərəcə döndürmə (-y,x) olacaq, yenidən dərəcə döndürmə (-x,-y) olacaq, beləliklə, əgər biz -dən başlayırıq:
(x,y)\rightarrow(-y,x)\rightarrow(-x,-y)\rightarrow(y,-x)\rightarrow(x,y)
bu dörd əldə edilə bilən mövqe, və tərəfləri olan bir ox-alınmış düzbucaqlı "kənarlarıdır".
Polis Manhattan metrikası ilə hərəkət edir. Mənşədən hər hansı bir küncə olan Manhattan məsafəsi
d=|x|+|y|-dir. Dönmə polis tərəfindən hədəflənəcək küncü dəyişdirir və oyunçu polisə əlavə hərəkətlər sərf etdirmək üçün küncləri ağıllı şəkildə dəyişdirə bilər.
İndi əgər siz |x|=|y|=1 koordinatındasınızsa, onda əgər döndürməniz varsa, maksimum 2(n+1) polis hərəkətində sağ qala bilərsiniz. Burada yaşıl xətt polis üçün optimal yoldur və bənövşəyi nöqtələr sizin teleport edə biləcəyiniz yerdir, qırmızı yol isə optimal yol deyil.
Və əgər siz indi |x|=|y|>1-dirsə, onda optimal şəkildə teleport etsəniz, maksimum |x|(2n+1) + |y| polis hərəkətində sağ qala bilərsiniz.
Və əgər siz hər hansı -dəsinizsə, maksimum 2n(max(|x|,|y|)-1)+|x|+|y| polis hərəkətində sağ qala bilərsiniz.
for _ in range(int(input())):
n, k = map(int, input().split())
x, y = map(int, input().split())
res = "Xeyr"
if abs(x) == abs(y) and abs(x) == 1:
if 2 * (n + 1) <= k:
res = "Bəli"
elif abs(x) == abs(y):
if abs(x) * (2 * n + 1) + abs(y) <= k:
res = "Bəli"
else:
if 2 * n * (max(abs(x), abs(y)) - 1) + abs(x) + abs(y) <= k:
res = "Bəli"
print(res)