题意:
分析:
题解
代码:
#include <bits/stdc++.h>
#define pb push_back
using namespace std;
vector<int>pos,neg;
const int inf=0x3f3f3f3f;
typedef long long ll;
int main()
{
int t,n,a;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
pos.clear();
neg.clear();
int ans=0,t1=inf,t2=inf;
for(int i=1;i<=n;i++)
{
scanf("%d",&a);
if(a>0)
pos.pb(a);
else if(a<0)
neg.pb(-a);
}
if(pos.empty()&&neg.empty())
{
puts("0");
continue;
}
sort(pos.begin(),pos.end());
sort(neg.begin(),neg.end());
if(pos.size())
{
int len=pos.size();
for(int i=0;i<len;i++)
{
int x=(i==0?0:pos[i-1]);
int y=(pos[len-1]-pos[i]+1)/2;
t1=min(max(x,y),t1);
}
if(neg.size())
t1=max(t1,neg.back());
}
if(neg.size())
{
int len=neg.size();
for(int i=0;i<len;i++)
{
int x=(i==0?0:neg[i-1]);
int y=(neg[len-1]-neg[i]+1)/2;
t2=min(max(x,y),t2);
}
if(pos.size())
t2=max(t2,pos.back());
}
ans=min(t1,t2);
printf("%d
",ans);
}
return 0;
}