提交时间:2026-06-06 14:13:58
运行 ID: 41949
#include<bits/stdc++.h> using namespace std; const int N=2e5+10; int n; long long a[N]; int qiu(int l,int r){ return ((a[r]-a[l]+1)/2); } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+n+1); int ans=INT_MAX; if(n<=3) ans=0; //!!!!!!!!!!!!!!!!! for(int i=1;i<=n;i++){ int y=(a[i]-a[1]+1)/2; int l=i+1,r=n-1; while(l<r){ int mid=(l+r+1)/2; if(qiu(i+1,mid)>qiu(mid+1,n)) r=mid-1; else l=mid; } y=max(y,min(max(qiu(i+1,l),qiu(l+1,n)),max(qiu(i+1,l+1),qiu(l+2,n)))); ans=min(ans,y); } printf("%d",ans); return 0; }