땅따먹기
시간 제한2초메모리 제한1024 MB
무한 격자에서 원점 하나에 0이 적힌 상태로 시작해, 매 회마다 0이 적힌 칸 하나를 1로 바꾸며 이웃에 0을 퍼뜨릴 때 N회 후 1의 개수를 정확히 K로 만들 수 있는지 판정한다.
문제
무한히 넓은 좌표평면이 있다. 초기에는 에 이 적혀있고, 나머지 정수 좌표에는 아무 값도 적혀 있지 않다.
당신은 큐를 이용해 아래의 행동을 번 수행하려고 한다. 초기에 큐는 비어 있다.
-
이 적혀 있는 좌표 중 개를 골라서, 해당 좌표를 큐에 넣는다.
-
아래의 행동을 차례대로 수행한다.
- 큐의 맨 앞에서 좌표 개를 꺼내고, 꺼낸 좌표에 을 적는다.
- 꺼낸 좌표와 상하좌우로 인접한 정수 좌표 중, 이 적혀 있는 모든 정수 좌표를 큐의 맨 뒤에 넣는다. 큐에 좌표를 넣는 순서는 결과에 영향을 주지 않는다.
- 꺼낸 좌표와 상하좌우로 인접한 정수 좌표 중, 아무 값도 적혀 있지 않은 모든 좌표에 을 적는다.
-
큐가 빌 때까지 을 반복한다.
행동을 어떤 방식으로 수행하더라도, 한 좌표는 큐에 최대 한 번만 들어감을 증명할 수 있다.
행동을 번 수행했을 때, 이 적힌 좌표의 개수가 정확히 가 될 수 있는지 판별해 보자.
입력
첫 번째 줄에 테스트 케이스의 수를 의미하는 정수 가 주어진다.
각 테스트 케이스마다 행동의 횟수를 의미하는 정수 , 이 적힌 좌표 개수의 목표를 의미하는 정수 가 공백으로 구분되어 주어진다.
출력
각 테스트 케이스마다 이 적힌 좌표의 개수가 정확히 가 될 수 있다면 YES를, 그렇지 않다면 NO를 출력한다.
힌트
큐는 으로 표현되는 자료구조입니다. 큐에 원소 를 넣으면, 큐는 가 됩니다. 큐에서 원소를 꺼내면, 를 얻고 큐는 이 됩니다.