타일 마스터의 시련
시간 제한1초메모리 제한512 MB
N x M 격자에 Q번의 직사각형 뒤집기 갱신이 주어질 때마다, 허용된 길이의 행 뒤집기와 열 뒤집기만으로 모든 타일을 빛으로 만들 수 있는지 판별한다.
문제
메이플스토리의 새로운 지역, "리버스 시티"에서는 마법 타일이 x 크기의 격자판을 이루고 있다. 각 타일의 앞면에는 빛의 문양, 뒷면에는 어둠의 문양이 새겨져 있으며, 모든 타일은 초기 상태에서 빛의 문양이 위를 향하고 있다.
모험가 여러분은 두 가지 마법 스크롤을 사용하여 타일을 뒤집을 수 있다. 스크롤은 사용해도 사라지지 않으며, 한 스크롤을 여러번 사용할 수 있다.
- 빛의 스크롤: 가지 종류의 빛의 스크롤이 존재하며, 번째 빛의 스크롤을 사용하면 연속한 개의 행을 선택하여 해당 행에 놓인 모든 타일을 뒤집을 수 있다.
- 어둠의 스크롤: 가지 종류의 어둠의 스크롤이 존재하며, 번째 어둠의 스크롤을 사용하면 연속한 개의 열을 선택하여 해당 열에 놓인 모든 타일을 뒤집을 수 있다.
모험가 여러분이 스크롤을 적절히 사용하여 모든 타일이 빛의 문양이 위를 향하도록 만들 수 있는 타일의 초기 상태를 아름다운 패턴이라 정의한다.
지역의 수호자, 타일 마스터는 시간의 흐름에 따라 타일의 문양을 조작하며 모험가에게 시련을 부여한다. 시각 에는 모든 타일이 빛의 문양이 위를 향하고 있다. 이상 이하인 에 대해 시각 가 되면 타일 마스터는 를 선택하고, 와 를 만족하는 모든 정수 에 대해 행 열에 위치한 타일을 모두 뒤집는다.
이제, 모험가 여러분은 각 시각 에 대해, 해당 시각의 타일 상태를 시작 상태로 할 때 스크롤을 적절히 사용하여 모든 타일이 빛의 문양이 위를 향하게 만들 수 있는지, 즉 타일 상태가 아름다운 패턴인지 판별하는 프로그램을 작성하라.
입력
첫 줄에 격자판의 크기를 나타내는 두 정수 과 이 공백으로 구분되어 주어진다. ()
그다음 줄에 빛의 스크롤 종류의 수를 나타내는 정수 가 주어진다. ()
그다음 줄에 각 빛의 스크롤 특성값을 나타내는 개의 서로 다른 정수 가 공백으로 구분되어 주어진다. ()
그다음 줄에 어둠의 스크롤 종류의 수를 나타내는 정수 가 주어진다. ()
그다음 줄에 각 어둠의 스크롤 특성값을 나타내는 개의 서로 다른 정수 가 공백으로 구분되어 주어진다. ()
그다음 줄에 시간의 길이를 나타내는 정수 가 주어진다. ()
이어지는 개의 줄의 번째 줄에는 시각 에 타일 마스터가 타일의 문양을 조작하는 방법을 나타내는 네 정수 가 공백으로 구분되어 주어진다. ()
출력
첫 줄에 정답을 나타내는 길이 의 문자열을 출력한다. 이 문자열은 Y와 N으로만 이루어져 있어야 한다. 번째 문자가 Y이면 시각 에 타일 상태가 아름다운 패턴인 것이고, N이면 그렇지 않은 것을 의미한다.