일이 이어져야 좋다
시간 제한5초메모리 제한1024 MB
정수 N이 주어질 때 각 질의 (i, j, k)마다 S_N[i..j]에서 0을 최대 k개 포함하는 가장 긴 부분 문자열의 길이를 구합니다.
문제
양의 정수 으로 문자열 을 다음과 같이 정의한다. 은 을 2로 나눈 몫이다.
- 인 경우, 은 1 한 글자로 이루어진 문자열이다.
- 이고 이 짝수인 경우, 이다. 즉 0 한 글자 좌우에 가 이어진 문자열이다.
- 이고 이 홀수인 경우, 이다. 즉 1 한 글자 좌우에 가 이어진 문자열이다.
은 다음과 같이 만들어진다.
- 3번 규칙이 적용되므로 이다.
- 2번 규칙에 따라 은 이 되므로 이다.
- 3번 규칙과 1번 규칙을 차례로 적용하면 이 된다.
- 따라서 이다.
양의 정수 이 주어질 때, 다음 형태의 질의 개를 해결하는 프로그램을 작성하라. 번째 질의는 정수 세 개 가 주어진다. 이때 에서 0을 최대 개까지 포함하는 부분문자열 중 가장 긴 것의 길이를 구한다.
질의 이면 0을 포함하지 않는 부분문자열을 찾아야 하므로 답은 7이다. 질의 이면 에는 0이 2개뿐이므로 구간 전체가 답이 되고, 그 길이는 13이다.
입력
첫 번째 줄에 정수 과 가 주어진다. 다음 개의 줄에는 각각 , , 가 공백 하나씩을 사이에 두고 주어진다.
출력
각 질의에 대한 답을 주어진 순서대로 한 줄에 하나씩 출력한다.
제한
모든 질의의 를 더하면 을 넘지 않는다.
모든 에 대해 (의 길이)이다.
힌트
길이 인 문자열 와 인 정수 , 에 대해, 는 의 번째 문자부터 번째 문자까지를 순서대로 포함하는 문자열이다. 이러한 문자열을 의 부분문자열이라고 한다.
예를 들어 가 0100101이라면, 는 001이고 은 0101이다. 따라서 001과 0101은 0100101의 부분문자열이지만, 1010은 부분문자열이 아니다.