만드는 중입니다

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

가장 큰 방 번호 2

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

요약
숫자별 구매 비용과 예산이 주어질 때 만들 수 있는 가장 큰 방 번호를 구해 길이와 앞뒤 50자리를 출력하는 문제입니다.
난이도

보통10점 중 7점

유형
그리디, 수학, 시뮬레이션, 문자열
정답자
아직 제출이 없습니다

문제

어떤 사무실의 방 번호를 정하려고 한다. 방 번호를 만들려면 숫자판을 구매해야 하며, 사용할 수 있는 금액은 M원이다.

숫자판에는 0부터 N-1까지의 숫자가 있고, 숫자 i의 가격은 P_i원이다. 같은 숫자는 여러 번 구매할 수 있으며, 필요한 만큼 항상 구매할 수 있다. 방 번호가 0이 아니라면 첫 자리에 0을 놓을 수 없다.

M원 이하를 사용해서 만들 수 있는 가장 큰 방 번호 X를 구한다. X가 매우 길 수 있으므로, 전체 문자열 대신 자릿수와 앞쪽/뒤쪽 일부만 출력한다.

입력

첫째 줄에 숫자의 개수 N이 주어진다.

둘째 줄에 P_0, P_1, ..., P_{N-1}이 공백으로 구분되어 주어진다.

셋째 줄에 사용할 수 있는 금액 M이 주어진다.

출력

첫째 줄에 만들 수 있는 가장 큰 방 번호 X의 자릿수를 출력한다.

둘째 줄에는 X의 처음 50자리를 출력하고, 셋째 줄에는 X의 마지막 50자리를 출력한다. X의 자릿수가 50보다 작으면 둘째 줄과 셋째 줄에 모두 X를 출력한다.

어떤 방 번호도 만들 수 없다면 첫째 줄에 0을 출력하고, 둘째 줄과 셋째 줄은 빈 줄로 출력한다.

제한

  • 1 <= N <= 10
  • 1 <= P_i <= 10^18
  • 0 <= M <= 10^18
  • N, P_i, M은 정수이다.

예제8

  1. 예제 1

    입력
    3
    6 7 8
    21
    
    예상 출력
    3
    210
    210
    
  2. 예제 2

    입력
    3
    1 7 8
    21
    
    예상 출력
    15
    100000000000000
    100000000000000
    
  3. 예제 3

    입력
    10
    1 1 1 1 1 1 1 1 1 1
    923372036854775807
    
    예상 출력
    923372036854775807
    99999999999999999999999999999999999999999999999999
    99999999999999999999999999999999999999999999999999
    
  4. 예제 4

    입력
    2
    1 923372036854775807
    923372036854775807
    
    예상 출력
    1
    1
    1
    
  5. 예제 5

    입력
    2
    1 923372036854775806
    923372036854775807
    
    예상 출력
    2
    10
    10
    
  6. 예제 6

    입력
    3
    1 5 10
    10
    
    예상 출력
    6
    100000
    100000
    
  7. 예제 7

    입력
    2
    1 923372036854775807
    923372036854775806
    
    예상 출력
    1
    0
    0
    
  8. 예제 8

    입력
    2
    1 10
    1000000
    
    예상 출력
    999991
    10000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000