正在做二分,还是被二分虐啊
#include<iostream>
#include<cstdio>
using namespace std;
int a[100005];
int b[100005];
int main()
{
std::ios::sync_with_stdio(false);
int t;
cin>>t;
int kase;
for(kase=1;kase<=t;kase++)
{
int n;
cin>>n;
int i,j;
for(i=0;i<n;i++)
cin>>a[i];
int l=0;
int r=10000000;
int d ;
while(l<r)
{
d=(l+r)/2;
b[n-1]=a[n-1]+d;
for(i=n-2;i>=0;i--)
{
if(a[i]-d<b[i+1])
{
if(a[i]+d>=b[i+1])//一定要加等于哟
b[i]=b[i+1]-1;
else
b[i]=a[i]+d;
}
else
{
break;
}
}
if(i<0)
{
r=d;
}
else
l=d+1;
}
cout<<"Case #"<<kase<<":"<<endl;
cout<<l<<endl;
}
}