#include <stdio.h>
void swap(int *a, int *b){
int c = *a;
*a = *b;
*b = c;
}
void heap_adjust(int *arr, int len, int index) {
if(index<0 || index>len || 2*index+1 >= len) return;
int max = 2*index+1;
if(max+1 < len && arr[max+1] > arr[max]) max++;
if(arr[max] > arr[index]){
swap(&arr[max], &arr[index]);
heap_adjust(arr, len, max);
}
}
int findKthLargest(int* arr, int len, int k){
int i;
for(i=len/2; i>=0; i--) heap_adjust(arr, len, i);
for(i=0; i<k; i++){
heap_adjust(arr, len-i, 0);
swap(&arr[0], &arr[len-i-1]);
}
return arr[len-k];
}
int main () {
int arr[]={6,5,2,8,10,9};
int k = findKthLargest(arr,6,1);
printf("%d ",k);
}