만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Homeric Epics

시간 제한1초메모리 제한1024 MB

요약
각 단어에 k진 접두사 없는 코드를 배정해 전체 길이를 최소로 하고, 그 조건에서 가장 긴 코드의 최소 길이를 구합니다.
난이도

보통10점 중 6점

유형
그리디, 힙
정답자
아직 제출이 없습니다

문제

Homeric Epics에는 11부터 nn까지 번호가 붙은 서로 다른 단어 nn개가 있습니다. ii번째 단어는 본문에 w_iw\_i번 나타납니다. Allison은 ii번째 단어를 kk진 문자열 s_is\_i로 바꾸려 합니다. 이때 모든 1≤i,j≤n1 \le i,j \le n (i≠ji \ne j)에 대해 s_is\_i는 s_js\_j의 접두사가 될 수 없습니다.

Allison은 본문의 전체 길이가 최소가 되도록 s_is\_i를 어떻게 고를 수 있는지 알고 싶어 합니다. 또한 전체 길이가 최소인 경우에 가장 긴 s_is\_i의 길이가 가질 수 있는 최솟값도 알고 싶어 합니다.

문자열의 모든 문자가 {0,1,…,k−1}\{0, 1, \dots, k-1\}에 속하면 그 문자열을 kk진 문자열이라고 합니다.

문자열 s_1s\_1이 s_2s\_2의 접두사라는 것은, 1≤t≤m1 \le t \le m인 어떤 tt에 대해 s_1=s_2\[1…t]s\_1 = s\_2\[1 \dots t]가 성립하는 것을 말합니다. 여기서 mm은 s_2s\_2의 길이이고, s_2\[1…t]s\_2\[1 \dots t]는 s_2s\_2의 앞 tt개 문자로 이루어진 부분 문자열입니다.

입력

입력 파일의 첫 줄에는 공백으로 구분된 두 정수 nn, kk가 주어집니다. 이는 단어가 총 nn개이고, 이들을 kk진 문자열로 바꿔야 함을 뜻합니다.

이어지는 nn개의 줄 중 (i+1)(i+1)번째 줄에는 ii번째 단어가 등장한 횟수를 나타내는 음이 아닌 정수 w_iw\_i가 주어집니다.

출력

출력은 두 줄입니다. 첫 줄에는 치환 후 Homeric Epics의 전체 길이의 최솟값을 정수로 출력합니다. 둘째 줄에는 전체 길이가 최소인 경우에서 가장 긴 s_is\_i의 길이의 최솟값을 정수로 출력합니다.

제한

  • 3≤n≤100 0003 \le n \le 100\,000
  • 2≤k≤92 \le k \le 9
  • 0<w_i≤10110 < w\_i \le 10^{11}

예제2

  1. 예제 1

    입력
    4 2
    1
    1
    2
    2
    
    예상 출력
    12
    2
    
  2. 예제 2

    입력
    6 3
    1
    1
    3
    3
    9
    9
    
    예상 출력
    36
    3