#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
#include <math.h>
using namespace std;
#define N 1000050
int a[N],n,k;
bool check(int x) {
int i,cnt=n;
for(i=1;cnt&&i<2*n*k;i++) {
if(a[i+1]-a[i]<=x) {
if(2*n*k-i+1<cnt*k*2) return 0;
i++;
cnt--;
}
}
return !cnt;
}
int main() {
scanf("%d%d",&n,&k);
int i,l=0,r=1000000001;
for(i=1;i<=2*n*k;i++) {
scanf("%d",&a[i]);
}
sort(a+1,a+2*n*k+1);
while(l<r) {
int mid=(l+r)>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
printf("%d\n",l);
}
请大家帮忙注释一下每行代码,我不太理解这段代码