만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

자연수 스트리머

시간 제한3초메모리 제한1024 MB

요약
이진 문자열이 주어질 때, 어떤 l부터 시작해 연속된 이진수를 이어 붙인 부분 문자열의 최대 길이를 구합니다.
난이도

어려움10점 중 8점

유형
문자열, 문자열 매칭, 수학
정답자
아직 제출이 없습니다

문제

0과 1로만 이루어진 길이 NN의 이진 문자열 SS가 주어진다. 어떤 자연수 xx의 0으로 시작하지 않는 이진수 표현을 bin(x)\mathrm{bin}(x)라고 하자. 이 문제에서 자연수는 00을 포함하며, 예외적으로 bin(0)=\mathrm{bin}(0) = 0이다.

문자열 TT의 점수란, 어떤 두 자연수 0≤l≤r0\leq l\leq r에 대해 TT가 bin(l)\mathrm{bin}(l), bin(l+1)\mathrm{bin}(l+1), ⋯\cdots, bin(r)\mathrm{bin}(r)을 이어붙여 쓴 문자열과 일치할 때, 그러한 (l,r)(l,r) 쌍 중 (r−l+1)(r-l+1)의 최댓값이다. 그러한 (l,r)(l,r)이 존재하지 않으면 TT의 점수는 00점이다.

SS의 부분 문자열(substring) 중 점수가 가장 높은 것의 점수를 구하라. 문자열의 부분 문자열이란, 그 문자열의 앞과 뒤에서 몇 글자씩 지워서 만들 수 있는 문자열이다(아무것도 지우지 않아도 된다).

입력

첫째 줄에 테스트 케이스의 개수 1≤T≤500 0001\leq T\leq 500\,000이 주어진다.

각 테스트 케이스마다, 첫째 줄에 이진 문자열의 길이 1≤N≤500 0001\leq N\leq 500\,000이 주어진다. 그다음 줄에 0과 1로만 구성된 길이 NN의 문자열 SS가 주어진다.

모든 테스트 케이스에서 NN의 합은 500 000500\,000을 넘지 않는다.

출력

각 테스트 케이스마다 답을 한 줄에 하나씩, 총 TT개의 줄에 걸쳐 출력한다.

예제1

  1. 예제 1

    입력
    6
    9
    011011100
    2
    10
    9
    110110001
    11
    11011100101
    10
    1011011000
    14
    11000110010101
    
    예상 출력
    5
    1
    3
    5
    4
    3