考虑二分答案。
二分出来mid,那么对于绝对值≤mid的,我们不需要管他,因为他可以直接走到原点,在mid时间内一定可以到。
那么对于剩下的呢?我们对于剩下的去找最大值max和最小值min,如果max - min <= 2 * mid,说明mid这个是满足答案的,那么就需要下降二分上界,至于一个门放在了原点处,另一个门在哪我们并不关注,只要满足max - min <= 2 * mid,那么第二个门一定在min到max之间,并且会尽可能地居中。
其实不难发现,要满足这个式子,一定要满足除去绝对值≤mid后的剩下的a[i]要同(符)号,不然必有max - min > 2 * mid

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[1<<17];
int n;
bool check(int x){
    ll ma=-2e9,mi=2e9;
    for(int i=1;i<=n;i++){
        if(abs(a[i])<=x) continue;
        ma=max(ma,a[i]);
        mi=min(mi,a[i]);
    }
    return ma-mi<=2*x;
}
int main(){
    int t;cin>>t;
    while(t--){
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        int l=0,r=2e9;
        int ans;
        while(l+1<r){
            int mid=l+r>>1;
            if(check(mid)) ans=mid,r=mid;
            else l=mid;
        }
        cout<<ans<<endl;
    }
    return 0;
}