해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
0과 1로 이루어진 n개의 문자열 s1, s2, ..., sn이 주어진다. m번의 연산을 수행하며, 각 연산에서는 기존 문자열 두 개를 연결하여 새로운 문자열을 만든다. i-th번째 연산에서는 연결 결과 saisbi를 새로운 문자열 sn + i에 저장한다(연산 번호는 1부터 시작한다). 각 연산 후, 길이가 k이고 0과 1로 이루어진 가능한 모든 문자열(그러한 문자열은 2k개이다)이 새 문자열의 부분 문자열이 되도록 하는 최대 양의 정수 k를 구해야 한다. 그러한 k가 없으면 0을 출력한다.
첫째 줄에 문자열의 개수를 나타내는 하나의 정수 n (1 ≤ n ≤ 100)이 주어진다. 다음 n개 줄에 문자열 s1, s2, ..., sn (1 ≤ |si| ≤ 100)이 한 줄에 하나씩 주어진다. 문자열 길이의 합은 100보다 크지 않다.
다음 줄에 연산의 개수를 나타내는 하나의 정수 m (1 ≤ m ≤ 100)이 주어진다. 이어지는 m개 줄에는 각각 두 정수 ai와 bi (1 ≤ ai, bi ≤ n + i - 1)이 주어지며, 이는 sn + i를 만들기 위해 연결할 문자열의 번호이다.
m개의 줄을 출력한다. 각 줄에는 해당 연산 후의 질문에 대한 답인 정수 하나를 출력한다.
5
01
10
101
11111
0
3
1 2
6 5
4 4
1
2
0
첫 번째 연산에서는 새로운 문자열 "0110"이 만들어진다. k = 1일 때, 길이가 k인 가능한 두 이진 문자열은 "0"과 "1"이며, 둘 다 새 문자열의 부분 문자열이다. k = 2 이상일 때는 이 문자열 (for k = 2 such string is "00")에 나타나지 않는 길이 k의 문자열이 존재한다. 따라서 답은 1이다.
두 번째 연산에서는 문자열 "01100"이 만들어진다. 이제 길이가 k = 2인 모든 문자열이 존재한다.
세 번째 연산에서는 문자열 "1111111111"이 만들어진다. 영이 없으므로 답은 0이다.