func NewIntHeap(keys ...int) *IntHeap {
	h := &IntHeap{
		n:  len(keys),
		pq: append(make([]int, 1), keys...),
	}
	h.Fix()
	return h
}
NewIntHeap creates a heap, optionaly with keys already populating
it. The complexity is O(n) where n = len(keys).
package codegen
func (h IntHeap) compare(a, b int) int { return int(a) - int(b) }
type IntHeap struct {
	n  int
	pq []int
}