만드는 중입니다

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

원교수님 과제가 너무 많아요

면접 대비

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

요약
각 과제를 서로 다른 날에 시작해 기한 안에 끝내도록 고르고, 총점이 C 이상이 되는 최소 봇 개수를 구합니다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 유니온 파인드
정답자
아직 제출이 없습니다

문제

중간고사를 준비 중인 김한양은 원교수님께서 내주신 수많은 과제 때문에 절망했다. 터덜터덜 집에 가던 김한양은 집 앞에서 과제를 자동으로 해결해 주는 로봇 '과제봇'을 파는 상인을 만났다. 김한양은 직접 과제를 하지 않고 과제봇을 사서 이용하기로 했다.

과제봇 상인은 매일 김한양의 집 앞에서 과제봇을 판매한다. 과제봇은 너무 비싸서, 가난한 대학생 김한양은 하루에 최대 하나의 과제봇만 살 수 있다. 과제봇은 구매한 당일에 바로 작동시켜야 하며, 각각의 과제봇은 사용자가 지정한 과제 하나만 수행할 수 있다. 과제봇이 과제를 완전히 해결한 시점에 그 과제에 배정된 포인트가 지급된다.

과제마다 마감일, 해결하는 데 걸리는 시간, 해결했을 때 얻는 포인트가 모두 다르다. 그래서 모든 과제를 수행하지 못할 수도 있다. 다행히 자비로우신 원교수님께서는 얻은 포인트의 총합이 공지된 커트라인 이상이면 재수강을 면하게 해 주셨다. 따라서 김한양은 재수강을 면할 수 있을 만큼만 과제를 해결하려 한다. 커트라인을 넘기는 데 과제봇이 최소 몇 개 필요한지 구해 보자.

입력

첫째 줄에 과제의 개수 N (1≤N≤200 000)N\ (1 \leq N \leq 200\,000)과 커트라인 C (N≤C≤N×40)C\ (N \leq C \leq N \times 40)가 주어진다.

다음 줄부터 N+1N+1번째 줄까지 각 과제의 마감일 d (1≤d≤N)d\ (1 \leq d \leq N), 해결하는 데 걸리는 기간 t (1≤t≤d)t\ (1 \leq t \leq d), 해결했을 때 얻는 포인트 p (1≤p≤100)p\ (1 \leq p \leq 100)가 공백으로 구분되어 주어진다.

예를 들어 t=3t=3이라면 과제봇이 해당 과제를 해결하는 데 33일이 걸린다.

또한 d=3d=3, t=2t=2인 과제를 완료하려면 늦어도 22일차에는 과제봇을 작동시켜야 한다. (22일, 33일 이틀간 작동한 뒤 33일차에 과제를 완료한다.)

출력

커트라인을 넘길 수 있는 방법이 있다면 김한양이 사용해야 하는 과제봇의 최소 개수를 출력한다.

얻을 수 있는 포인트의 최댓값보다 커트라인이 더 높다면 I'm sorry professor Won!을 출력한다.

예제2

  1. 예제 1

    입력
    7 150
    1 1 10
    7 4 20
    3 2 50
    6 1 40
    7 5 30
    5 2 50
    4 1 5
    
    예상 출력
    4
    
  2. 예제 2

    입력
    7 280
    1 1 10
    7 4 20
    3 2 50
    6 1 40
    7 5 30
    5 2 50
    4 1 5
    
    예상 출력
    I'm sorry professor Won!