LCP 질의
시간 제한2.5초메모리 제한1024 MB
주어진 문자열 s_i와 t_j로, 각 질의가 지정한 t_j들을 이어 붙인 문자열과 모든 s_i의 최장 공통 접두사 길이의 합을 구합니다.
문제
문자열 가 문자열 의 접두사(prefix)라는 것은 의 마지막 글자를 0번 이상 반복해서 지워서 를 얻을 수 있다는 뜻이다. 예를 들어 abac, aba, ab, a, 빈 문자열은 모두 abac의 접두사이다.
두 문자열 , 에 대해 는 둘의 가장 긴 공통 접두사의 길이이다. 예를 들어 abacab과 abacbba의 가장 긴 공통 접두사는 abac이므로 두 문자열의 는 이다. 두 문자열은 항상 빈 문자열을 공통 접두사로 가지므로 는 언제나 정의된다.
소문자 영문자로 이루어진 개의 문자열 과 개의 문자열 이 주어진다. 이어서 개의 질의가 주어진다. 각 질의는 정수 수열 로 주어진다. 를 를 이어 붙인 문자열이라 할 때, 각 질의마다 를 구하라.
입력
입력은 다음 형식으로 하나의 테스트 케이스가 주어진다.
첫 줄에 정수 이 주어진다. 다음 개 줄에는 비어 있지 않은 문자열 가 한 줄에 하나씩 주어진다. 다음 줄에는 정수 이 주어진다. 이어서 개 줄에 비어 있지 않은 문자열 가 한 줄에 하나씩 주어진다. 다음 줄에는 정수 가 주어지고, 이어서 개의 질의가 한 줄에 하나씩 주어진다. 각 질의는 다음 형식이다.
는 정수 수열의 길이를 나타내는 양의 정수이다. 각 는 1 이상 이하의 정수이다.
제약 조건은 , , 이다. 길이의 합은 을 넘지 않는다. 길이의 합도 을 넘지 않는다. 모든 질의의 의 합은 을 넘지 않는다.
출력
개의 줄을 출력하라. 번째 줄에는 번째 질의의 답을 출력한다.