B. Motarack's Birthday-1301B-(贪心)

总结

-1 A E B -1 -1 -1 -1 -1 C -1 -1 -1 D -1-1-1
-1=k
a1=|A-k|
a2=|B-k|
a3=|C-k|
a4=|D-k|
要保证max(ai)最小,那么k一定为[A,B]的中点,这么一个关系求到k,然后填进去,跑一遍数据,就可以知道m了

const int N=2e5+5;
int a[N];
signed main()
{
    IOS;
    //file();
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        a[0]=-1,a[n+1]=-1;
        int l=1e9,r=0;
        for(int i=1;i<=n;i++)
        {
            if(a[i]==-1)
            {
                if(a[i-1]!=-1)
                    l=min(l,a[i-1]),r=max(r,a[i-1]);
                if(a[i+1]!=-1)
                    l=min(l,a[i+1]),r=max(r,a[i+1]);
            }
        }
        int k=(l+r)/2,m=0;
        for(int i=1;i<=n;i++)
        {
            if(a[i]==-1)
                a[i]=k;
            if(i!=1)
                m=max(m,abs(a[i]-a[i-1]));
        }
        cout<<m<<" "<<k<<endl;
    }
 
 
    return 0;
}
发布了130 篇原创文章 · 获赞 5 · 访问量 4984

猜你喜欢

转载自blog.csdn.net/weixin_44224825/article/details/104337309
今日推荐