노래 오래 부를래

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

요약
N개의 곡 길이와 처음 주어진 K분이 있을 때, 마지막 곡은 남은 시간을 넘겨서 끝까지 부를 수 있다는 규칙 아래 총 시간이 최대가 되는 곡 순서를 구한다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

sksms1375와 ohwphil은 오랜만에 만나 신나게 노래방에 갔습니다. 기분이 좋아진 두 친구는 함께 최대한 오랫동안 노래를 부르기로 했습니다.

두 친구가 부를 수 있는 노래는 총 NN곡입니다. ii번째 곡의 길이를 a_ia\_i라고 할 때, 각 곡의 길이는 a_1,a_2,⋯ ,a_Na\_1, a\_2, \cdots, a\_N 분입니다. 모든 곡은 서로 다르며, 길이가 같은 곡이 있을 수 있습니다. 노래방 기계에는 처음에 KK분 동안 부를 수 있도록 설정되어 있습니다.

두 친구는 다음과 같은 규칙으로 노래를 부릅니다.

  1. 시간이 남아 있지 않거나, 아직 부르지 않은 곡이 없다면, 친구들은 노래를 그만두고 집에 갑니다.
  2. 시간이 남아 있다면, 두 친구는 아직 부르지 않은 곡 중 하나를 골라 노래를 시작합니다. 곡을 부르는 도중 남은 시간이 00분이 되어도 곡을 끝까지 부를 수 있습니다.
  3. 곡이 끝나면 다시 1.번 과정으로 돌아갑니다.

두 친구는 꼼수를 이용하여 최대한 오랜 시간 동안 노래를 부르려고 합니다. 두 친구는 노래를 얼마나 오래 부를 수 있을까요?

입력

첫째 줄에 정수 NN, KK가 공백으로 구분되어 주어집니다. (1≤N≤1,000;(1 \leq N \leq 1\\,000; 1≤K≤100,000)1 \leq K \leq 100\\,000)

둘째 줄에 곡의 길이를 나타내는 NN개의 정수 a_1a\_1, a_2a\_2, ⋯\cdots, a_Na\_N이 공백으로 구분되어 주어집니다. (1≤a_i≤108)(1 \leq a\_i \leq 10^{8})

출력

첫째 줄에 최대한 오래 노래를 불렀을 때의 곡의 개수와 총 시간을 분 단위로 공백으로 구분하여 출력합니다.

둘째 줄에 총 시간을 가장 길게 만드는 한 가지 경우를 선택하여, 선택된 곡의 번호를 부른 순서대로 출력합니다. 단, 가능한 경우는 여러 가지가 있을 수 있으며 그 중 아무거나 출력해도 정답으로 인정됩니다. 곡의 개수를 최소화할 필요는 없습니다.

예제2

  1. 예제 1

    입력
    7 14
    1 1 2 7 9 10 110
    
    예상 출력
    5 123
    5 3 2 1 7
    
  2. 예제 2

    입력
    7 59
    7 2 13 5 17 11 3
    
    예상 출력
    7 58
    1 2 3 4 5 6 7