#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAX_N 100010
typedef long long LL;
int N;
int x[MAX_N];
bool C(int m){
LL total = (LL) N * (N - 1) / 2;
LL num = 0;
for(int i = 0;i < N; i++){
num += (x+N) - lower_bound(x + i + 1, x + N, x[i] + m);
}
return total - num <= (total - 1) / 2;
}
int solve(){
sort(x, x + N);
int lb = 0, ub = 1000000000;
while(ub - lb > 1){
int mid = (ub + lb) / 2;
if(C(mid)) lb = mid;
else ub = mid;
}
return lb;
}
int main(){
while(scanf("%d", &N) != EOF){
for(int i = 0;i < N; i++)
scanf("%d", &x[i]);
int ans = solve();
printf("%d\n", ans);
}
return 0;
}
poj3579
最新推荐文章于 2019-04-09 14:09:44 发布