아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

비밀번호 쌍 찾기

시간 제한7초메모리 제한128 MB

요약
서로 다른 두 문자열에서 각각 접두사와 접미사를 취해 반복이 일치하는 가장 긴 길이 쌍을 구합니다.
난이도

어려움10점 중 8점

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

문제

ICPC(Inter-Continental Programming Company)의 비밀 서버는 비밀번호 두 개 vv와 ww를 쓴다. 두 문자열은 v∣w∣=w∣v∣v^{|w|} = w^{|v|}를 만족한다. 즉 vv를 ∣w∣|w|번 이어 붙인 문자열과 ww를 ∣v∣|v|번 이어 붙인 문자열이 같다. 여기서 ∣v∣|v|는 문자열 vv의 길이다. 예를 들어 v=abv = \mathtt{ab}, w=ababw = \mathtt{abab}이면 v4=w2=ababababv^{4} = w^{2} = \mathtt{abababab}이다. v=wv = w인 경우는 안전하지 않아서 쓰지 않는다.

두 문자열을 외우기 어려워서, 관리자는 문자열 nn개로 이루어진 집합 안에 비밀번호를 숨겼다. 집합에는 서로 다른 문자열 xx와 yy가 있어서, vv는 xx의 접두사이고 (x=vv′x = vv'), ww는 yy의 접미사다 (y=w′wy = w'w).

문자열 집합이 주어지면 비밀번호 쌍을 찾는 프로그램을 작성하시오.

입력

입력은 표준 입력으로 주어진다. 첫째 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 첫째 줄에는 집합에 들어 있는 문자열의 개수 nn이 주어진다. (2≤n≤2002 \le n \le 200)

다음 nn개 줄에는 한 줄에 문자열 하나씩 주어진다. 각 문자열은 영어 소문자로만 이루어지고, 길이는 20,00020{,}000 이하다.

출력

출력은 표준 출력으로 한다. 테스트 케이스마다 정확히 한 줄씩 출력한다.

각 줄에는 정수 두 개 ∣v∣|v|와 ∣w∣|w|를 출력한다. 이때 집합 안의 서로 다른 두 문자열 xx와 yy에 대해 vv는 xx의 접두사, ww는 yy의 접미사이고, v∣w∣=w∣v∣v^{|w|} = w^{|v|}와 ∣v∣<∣w∣|v| < |w|를 만족해야 한다. 이런 쌍이 둘 이상이면 ∣v∣+∣w∣|v| + |w|가 가장 큰 쌍을 출력한다. 그런 비밀번호 쌍은 존재한다면 유일하다. 조건을 만족하는 쌍이 없으면 0 0을 출력한다.

예제2

  1. 예제 1

    입력
    2
    3
    abcabe
    defg
    bcabab
    3
    abcdef
    ghijkl
    mnopqr
    
    예상 출력
    2 4
    0 0
    
  2. 예제 2

    입력
    2
    2
    aaaaaaaa
    baaa
    2
    abc
    cab
    
    예상 출력
    2 3
    0 0