#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int const N = 50005;
int q[N];
bool check(int mid){
int cnt = 0;
for(int i = 0; i < n;i++){
int tmp = mid + q[i];
int pos = upper_bound(q,q+n,tmp) - q;
cnt += n - pos;
}
return cnt <= m;
}
int main(){
while(scanf("%d",&n) != EOF){
m = (n * (n - 1)) / 4;
for(int i = 0;i < n;i++){
scanf("%d",&q[i]);
}
sort(q,q+n);
int l = 0,r = q[n-1] - q[0];
while(l < r){
int mid = (l + r) >> 1;
if(check(mid)) r = mid;
else l = mid + 1;
}
cout << l << endl;
}
return 0;
}
1622

被折叠的 条评论
为什么被折叠?



