Homeric Epics
시간 제한1초메모리 제한1024 MB
각 단어에 k진 접두사 없는 코드를 배정해 전체 길이를 최소로 하고, 그 조건에서 가장 긴 코드의 최소 길이를 구합니다.
문제
Homeric Epics에는 부터 까지 번호가 붙은 서로 다른 단어 개가 있습니다. 번째 단어는 본문에 번 나타납니다. Allison은 번째 단어를 진 문자열 로 바꾸려 합니다. 이때 모든 ()에 대해 는 의 접두사가 될 수 없습니다.
Allison은 본문의 전체 길이가 최소가 되도록 를 어떻게 고를 수 있는지 알고 싶어 합니다. 또한 전체 길이가 최소인 경우에 가장 긴 의 길이가 가질 수 있는 최솟값도 알고 싶어 합니다.
문자열의 모든 문자가 에 속하면 그 문자열을 진 문자열이라고 합니다.
문자열 이 의 접두사라는 것은, 인 어떤 에 대해 가 성립하는 것을 말합니다. 여기서 은 의 길이이고, 는 의 앞 개 문자로 이루어진 부분 문자열입니다.
입력
입력 파일의 첫 줄에는 공백으로 구분된 두 정수 , 가 주어집니다. 이는 단어가 총 개이고, 이들을 진 문자열로 바꿔야 함을 뜻합니다.
이어지는 개의 줄 중 번째 줄에는 번째 단어가 등장한 횟수를 나타내는 음이 아닌 정수 가 주어집니다.
출력
출력은 두 줄입니다. 첫 줄에는 치환 후 Homeric Epics의 전체 길이의 최솟값을 정수로 출력합니다. 둘째 줄에는 전체 길이가 최소인 경우에서 가장 긴 의 길이의 최솟값을 정수로 출력합니다.