만드는 중입니다

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

창던지기 놀이

시간 제한3초메모리 제한512 MB

요약
기계가 제시하는 순서대로 창을 골라, 과녁의 m개 층을 모두 뚫는 데 드는 최소 비용을 구합니다.
난이도

어려움10점 중 9점

유형
동적 계획법, 정렬, 시뮬레이션
정답자
아직 제출이 없습니다

문제

산술 대학교에서는 가끔 산술 수업이 취소된다. 취소된 수업 시간에 학생들을 바쁘게 하려고 학장은 던지기용 표적과 창을 파는 기계를 구입했다.

표적은 여러 겹의 층으로 되어 있다. 창 하나는 여러 층을 뚫을 수 있다. 목표는 모든 층을 뚫는 것이다.

각 창은 지름, 세기, 비용을 가진다. 기계는 정해진 순서대로 창을 제안한다. 제안받은 창은 구매해서 바로 던지거나 버릴 수 있다. 어느 쪽이든 기계는 다음 창을 제안한다. 모든 창을 제안하고 나면 기계는 꺼진다.

처음 던진 창은 자기 지름과 같은 지름, 자기 세기와 같은 깊이의 둥근 구멍을 만든다. 이후에 던지는 창은 모두 구멍의 중심에 맞는다. 마지막으로 던진 창의 지름이 지금까지 던진 모든 창의 지름을 넘지 않으면, 아직 뚫리지 않은 첫 번째 층부터 층을 뚫는다. 그렇지 않으면 지름이 이 창의 지름보다 작은 구멍이 있는 층 중 가장 깊은 층부터 뚫는다.

각 창은 세기만큼의 층을 뚫는다. 어떤 창이 뚫는 층은 지름이 더 작은 창이 뚫은 층에 따라 달라지지 않는다. 창의 세기가 마지막 층을 뚫기에 충분하면 창이 표적을 관통하고 던지기가 끝난다.

기계가 제안하는 창 중에서 모든 층을 뚫으면서 비용의 합이 최소가 되도록 살 창을 고르시오.

입력

첫 줄에 정수 nn과 mm이 주어진다. nn은 창의 개수, mm은 표적 층의 개수이다 (1≤n,m≤20001 \leq n, m \leq 2000).

이어지는 nn개의 줄에 창 하나의 정보가 세 정수 did_i, sis_i, cic_i로 주어진다. 각각 창의 지름, 세기, 비용이다 (1≤di,ci≤1091 \leq d_i, c_i \leq 10^9, 1≤si≤20001 \leq s_i \leq 2000). 창은 기계가 제안하는 순서대로 주어진다.

출력

첫 줄에 총 비용 cc와 선택한 창의 개수 kk를 출력한다. 둘째 줄에는 선택한 창의 번호를 증가하는 순서로 kk개 출력한다. 번호는 기계가 제안한 순서를 따른다.

모든 층을 뚫을 수 없으면 −1-1을 출력한다. 최적해가 여러 개이면 그중 아무거나 출력한다.

예제3

  1. 예제 1

    입력
    2 2
    1 1 1
    2 3 2
    
    예상 출력
    2 1
    2
    
  2. 예제 2

    입력
    2 4
    1 1 1
    2 3 2
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    2 4
    1 1 1
    1 3 2
    
    예상 출력
    3 2
    1 2