# How to make this faster? This is giving TLE for QUALPREL

enter code here
#include<stdio.h>
#include<stdlib.h>

``````int partition(int *arr, int start, int end){
int i=start+1, j=end, temp;
while(i<j){
while(arr[i]>=arr[start]){
i++;
}
while(arr[j]<arr[start]){
j--;
}
if(i<j){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
j--;
}
}
temp=arr[start];
arr[start]=arr[j];
arr[j]=temp;
return j;
}
void quicksort(int *arr, int start, int end){
if(start<end){
int index=partition(arr, start, end);
quicksort(arr, start, index-1);
quicksort(arr, index+1, end);
}
}
int main(){
int i, t, n, k, count, *ptr;
scanf("%d", &t);
while(t--){
scanf("%d %d", &n, &k);
ptr=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++){
scanf("%d", &ptr[i]);
}
count=0;
quicksort(ptr, 0, n-1);
i=0;
while(ptr[i]>=ptr[k-1]){
count++;
i++;
}
printf("%d\n", count);
}

return 0;
}``````

Your approach is correct. But your sorting algorithm is taking a long time. Either you can use built-in c’s qsort, or you can learn some faster-sorting algorithms such as Merge Sort.