전자레인지 버튼 누르기

면접 대비

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

요약
0초에서 버튼을 눌러 목표 조리 시간에 가장 적은 횟수로 도달하고 정확히 맞출 수 없으면 도달 가능한 가장 가까운 긴 시간에 멈춥니다.
난이도

보통10점 중 4점

유형
BFS, 최단 경로, 그래프
정답자
아직 제출이 없습니다

문제

새로 산 전자레인지에는 조리 시간을 빠르게 입력하도록 버튼이 여러 개 달려 있다. 시간을 늘리는 버튼도 있고 줄이는 버튼도 있다. 원하는 조리 시간을 만들 때 버튼을 누르는 횟수를 가장 적게 하려고 한다.

조리 시간은 0초 이상 1시간 이하다. 버튼을 눌러 나온 시간이 0초보다 작으면 전자레인지는 조리 시간을 0초로 맞추고, 1시간보다 크면 1시간으로 맞춘다. 처음 조리 시간은 0초다. 조리 시간을 1초 이상 늘리는 버튼은 항상 하나 이상 있다.

전자레인지의 버튼과 원하는 조리 시간이 주어진다. 그 시간을 만드는 데 필요한 최소 버튼 횟수를 구하라. 원하는 시간을 정확히 만들 수 없으면, 만들 수 있는 시간 중 목표 시간보다 짧지 않으면서 가장 짧은 시간을 찾고, 그 시간을 만드는 최소 버튼 횟수를 구하라. 조리가 시작된 뒤에는 조리 시간을 바꿀 수 없다.

입력

첫 줄에 테스트 케이스 개수가 주어진다. 이 값은 100 이하의 자연수다.

각 테스트 케이스는 두 줄로 이루어진다.

  • 첫 줄에 정수 nn과 tt가 공백으로 구분되어 주어진다 (1≤n≤161 \le n \le 16, 0≤t≤36000 \le t \le 3600). nn은 쓸 수 있는 버튼의 개수, tt는 원하는 조리 시간이며 단위는 초다.
  • 둘째 줄에 정수 bib_i가 nn개, 공백으로 구분되어 주어진다 (−3600≤bi≤3600-3600 \le b_i \le 3600). bib_i는 ii번 버튼을 눌렀을 때 조리 시간에 더해지는 초다.

출력

각 테스트 케이스마다 정수 두 개를 공백으로 구분해 한 줄에 출력한다. 첫 번째 정수는 필요한 최소 버튼 횟수, 두 번째 정수는 전자레인지가 목표 시간보다 더 돌아가야 하는 최소 시간이며 단위는 초다.

예제3

  1. 예제 1

    입력
    2
    3 50
    -10 10 60
    1 50
    20
    
    예상 출력
    2 0
    3 10
    
  2. 예제 2

    입력
    3
    1 0
    1
    2 0
    -5 3
    1 0
    3600
    
    예상 출력
    0 0
    0 0
    0 0
    
  3. 예제 3

    입력
    3
    1 3600
    3600
    1 3600
    1
    1 3599
    3600
    
    예상 출력
    1 0
    3600 0
    1 1