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

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

지명

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

요약
최대 백만 개의 문자열이 주어질 때, 최장 공통 접두사 길이와 부분집합 크기의 곱이 최대가 되는 부분집합을 찾는다.
난이도

보통10점 중 6점

유형
문자열, 트라이, 정렬, 그리디
정답자
아직 제출이 없습니다

문제

지명(toponym)은 도시, 마을, 강, 산 등에 붙는 이름이다. 몰도바 공화국에서는 서로 매우 비슷한 지명을 흔히 볼 수 있다. 예를 들어 Orhei와 Orheiul Vechi, 또는 Jora de Sus, Jora de Mijloc, Jora de Jos 등이 있다.

일반적으로 모든 지명은 문자 A, B, C, …, Z, a, b, c, …, z 와 공백 문자로 이루어진 문자열이다. 지명 안에서 공백 문자가 두 개 이상 연속해서 나타날 수는 없다. 또한 지명의 맨 앞이나 맨 뒤에 공백이 오지 않는다. 어떤 지명의 처음 mm개 문자로 이루어진 부분 문자열을 길이 mm의 접두사(prefix)라고 한다. 예를 들어 부분 문자열 Jora는 지명 Jora de Mijloc의 길이 m=4m = 4인 접두사이다.

  • 지명 집합 TT의 유사도(level of similarity) Ls(T)Ls(T)는 TT에 속한 지명들의 가장 긴 공통 접두사의 길이로 정의한다. 예를 들어 지명 집합 TT = {Jora de Sus, Jora de Mijloc, Jora de Jos}에 대해 Ls(T)=8Ls(T) = 8이다.
  • 지명 집합 TT의 복잡도(level of complexity) Lc(T)Lc(T)는 다음과 같이 정의한다. Lc(T)=Ls(T)×k,Lc(T) = Ls(T) \times k\text{,} 여기서 kk는 TT에 속한 지명의 개수이다.

예를 들어 지명 집합 TT = {Jora de Sus, Jora de Mijloc, Jora de Jos}에 대해 Lc(T)=24Lc(T) = 24이다.

주어진 지명 집합 SS에 대해, 복잡도 Lc(T)Lc(T)가 최대가 되는 부분집합 TT (T⊆ST \subseteq S)를 찾아 그 최대 복잡도를 구하는 프로그램을 작성하라.

입력

첫째 줄에 집합 SS에 속한 지명의 개수 nn이 주어진다. 다음 nn개의 줄에 각각 하나의 지명이 주어진다. 각 지명은 문자 A, B, C, …, Z, a, b, c, …, z 와 공백으로 이루어진 문자열이다.

출력

최대 복잡도 Lc(T)Lc(T)를 나타내는 정수 하나를 한 줄에 출력한다.

제한

  • 2≤n≤10000002 \le n \le 1000000
  • 각 지명의 길이는 20000자를 넘지 않는다.
  • 입력 전체의 크기는 10MB를 넘지 않는다.

예제3

  1. 예제 1

    입력
    7
    Jora de Sus
    Orhei
    Jora de Mijloc
    Joreni
    Jora de Jos
    Japca
    Orheiul Vechi
    
    예상 출력
    24
    
  2. 예제 2

    입력
    2
    abc
    abc
    
    예상 출력
    6
    
  3. 예제 3

    입력
    3
    aaaa
    aaab
    aaac
    
    예상 출력
    9