헬터 스켈터
시간 제한2초메모리 제한128 MB
0으로 시작하는 이진 문자열의 런 길이가 주어질 때, 각 질의마다 0이 정확히 a개, 1이 정확히 b개인 부분 문자열이 있는지 판별합니다.
문제
이진 문자열은 '0'과 '1'로만 이루어진 비어 있지 않은 문자열이다. 문자열 의 부분 문자열 은 을 뜻한다.
장 교수는 '0'으로 시작하는 긴 이진 문자열 를 가지고 있다. 그는 의 부분 문자열 중에 '0'이 정확히 개, '1'이 정확히 개 들어 있는 것이 있는지 알고 싶다. 여기서 와 는 주어지는 두 정수이다.
문자열이 매우 길어서 다음 방식으로 압축한다.
- 같은 문자가 연속으로 나오는 구간으로 문자열을 나눈다.
- 인접한 두 구간의 문자는 서로 다르다. 각 구간의 길이를 차례로 적어 문자열을 나타낸다.
예를 들어 이진 문자열 00101100011110111101001111111의 구간은 이며, 이는 로 압축된다.
입력
첫 줄에 테스트 케이스의 수 가 주어진다. 각 테스트 케이스의 첫 줄에는 구간의 개수 과 질의의 개수 이 주어진다(, ).
다음 줄에는 각 구간의 길이 이 주어진다().
이어서 개의 줄에 두 정수 와 가 한 줄에 하나씩 주어진다(, ). 각 질의는 '0'이 정확히 개, '1'이 정확히 개인 부분 문자열이 에 있는지 묻는다.
테스트 케이스는 최대 200개이며, 전체 입력 크기는 20 MiB 이하이다. 모든 테스트 케이스의 을 합하면 이하이다.
출력
각 테스트 케이스마다 길이 인 이진 문자열을 한 줄에 출력한다. 번째 자리는 번째 질의의 답이 가능하면 '1', 불가능하면 '0'이다.