흥미진진한 메뉴
시간 제한4초메모리 제한512 MB
N개의 문자열과 각 위치의 기쁨 값이 주어질 때, 모든 부분 문자열에 대해 길이, 끝 위치의 기쁨 값, 그 부분 문자열을 접두사로 갖는 문자열 개수의 곱의 최댓값을 구한다.
문제
식당에 개의 메뉴가 있고, 각 메뉴는 문자열 로 주어진다. 각 문자열 에는 같은 길이의 기쁨 수치 배열 가 대응된다. 이 문제에서는 세 정수 로 정의되는 서브메뉴를 고른다. 는 메뉴의 번호이고, 는 고른 메뉴에서 부분 문자열을 지정한다.
품질 가 다음과 같이 정의될 때, 품질이 가장 높은 서브메뉴를 찾아야 한다.
- = 문자열 의 부분 문자열 (단, 는 1부터 시작하며 양 끝을 포함한다).
- popularity() = 가운데 서브메뉴 문자열 를 접두사로 포함하는 메뉴의 수.
- 는 서브메뉴의 크기, 즉 서브메뉴를 나타내는 부분 문자열의 길이이다.
- 는 서브메뉴의 기쁨 수치이며, 번째 배열의 번째 원소이다. 여기서 인덱스 는 사용되지 않는다.
품질이 가장 높은 서브메뉴를 찾을 수 있는가? 함수 의 최댓값을 출력하라.
입력
첫 줄에는 테스트 케이스의 수 가 주어진다.
각 테스트 케이스의 첫 줄에는 식당의 메뉴 수 ()이 주어진다.
이어서 개의 줄이 주어지고, 번째 줄에는 번째 메뉴를 나타내는 문자열 가 주어진다. 모든 메뉴는 비어 있지 않은 소문자 영어 알파벳 문자열이며, 길이의 합은 테스트 케이스마다 를 넘지 않는다.
그다음 개의 줄이 주어지고, 번째 줄에는 배열 가 주어진다. 의 길이는 문자열 와 같고, 이다. 각 배열의 값은 공백으로 구분된다.
출력
각 테스트 케이스마다 가장 좋은 서브메뉴 에 해당하는 최대 품질 를 한 줄에 출력한다.
힌트
주어진 두 케이스의 정답에 해당하는 삼중항은 각각 와 이다.