스케줄링
시간 제한1초메모리 제한256 MB
시작 시각, 마감 시각, 수행 시간이 주어진 n개의 선점 가능 작업을 m개의 동일한 프로세서에서 시간 구간 안에 모두 끝낼 수 있는지 판정한다.
문제
Byteasar가 열세 번째 생일을 맞았다. 부모님이 주신 선물 중 하나는 새 컴퓨터다. 그는 서둘러 선물을 풀고 컴퓨터 설명서를 읽기 시작했다. 컴퓨터에는 개의 프로세서가 있다는 사실을 알게 되었다. Byteasar는 기뻐한다. 드디어 많은 작업을 병렬로 실행할 수 있게 되었기 때문이다!
그는 새 컴퓨터에서 실행할 개의 작업 목록(번호 부터 )을 재빨리 준비했다. 프로세서는 한 번에 하나의 작업만 실행할 수 있다. 작업 를 완료하는 데 초가 걸리며, 선물을 푼 시점으로부터 초가 지나기 전에 실행을 시작하거나, 선물을 푼 시점으로부터 초가 지난 뒤에 완료하는 것은 금지된다. 각 작업의 실행은 원하는 만큼 여러 번 중단할 수 있고, 서로 다른 프로세서로 옮길 수도 있다. 그러나 두 개 이상의 프로세서에서 동시에 실행할 수는 없다. 작업을 프로세서 간에 옮기는 데 걸리는 시간은 무시할 수 있다. 각 작업이 주어진 시간 범위 안에서 실행되고 완료되도록 작업 실행을 스케줄링할 수 있는가? 다시 말해, Byteasar가 목표를 달성할 수 있도록 작업을 시작하고, 중단하고, 프로세서 간에 옮기는 전략이 존재하는가?
입력
첫째 줄에 정수 과 이 주어진다(). 각각 작업의 수와 프로세서의 수다. 다음 개의 줄에 Byteasar의 작업이 주어진다. 번째 줄에는 작업 의 설명이 있다. 세 정수 , , 가 주어진다(). 각각 번째 작업을 실행할 수 있는 시간 구간의 시작과 끝(선물을 푼 시점부터의 초 단위), 그리고 이 작업을 완료하는 데 걸리는 시간이다.
출력
모든 작업을 각자의 시간 범위 안에서 완료할 수 있으면 YES를 출력한다. 그렇지 않으면 NO를 출력한다.