| 123456789101112131415161718192021222324252627282930313233343536373839 | type array [][]intfunc (a array) Len() int           { return len(a) }func (a array) Less(i, j int) bool { return a[i][1] < a[j][1] }func (a array) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }type maxHeap []intfunc (h maxHeap) Len() int           { return len(h) }func (h maxHeap) Less(i, j int) bool { return h[j] < h[i] }func (h maxHeap) Swap(i, j int)      { h[i], h[j] = h[j], h[i] }func (h *maxHeap) Push(x interface{}) {	*h = append(*h, x.(int))}func (h *maxHeap) Pop() interface{} {	l := h.Len()	x := (*h)[l-1]	*h = (*h)[:l-1]	return x}func scheduleCourse(courses [][]int) int {	sort.Sort(array(courses)) // Sort by the deadlines	time, cnt := 0, 0	var h maxHeap	for _, course := range courses {		time += course[0]		heap.Push(&h, course[0])		cnt++		if course[1] < time {			cnt-- // If overdue, remove the course that cost the most time			x := heap.Pop(&h)			time -= x.(int)		}	}	return cnt}
 |