小根堆
int heap[1000], tot = 0;
void insert_heap(int x) {
tot++;
heap[tot] = x;
int i = tot;
int j = i / 2;
while ((j > 0) && heap[j] > heap[i]) {
swap(heap[j], heap[i]);
i = j;
j = i / 2;
}
}
int pop_heap() {
int x = heap[1];
heap[1] = heap[tot];
tot--;
int i = 1;
int j = i * 2;
if (j + 1 <= tot && heap[j + 1] < heap[j]) j++;
while (j <= tot && heap[j] < heap[i]) {
swap(heap[j], heap[i]);
i = j;
j = i * 2;
if (j + 1 <= tot && heap[j + 1] < heap[j]) j++;
}
return x;
}