虽说好像有插件,但是不会用,不知道怎么调试,只好到外面进行了,用于测试的完整代码如下
#include<cstdio>
#include<vector>
using namespace std;
int minLevel(vector<int>h)
{
int i,m,a,b,mid,size,d[55],mm,flag;
size=h.size();
for(i=1,flag=0;i<size;i++)
if(h[i]<=h[i-1])
flag=1;
if(flag==0)
{
return 0;
}
mm=1000000000;
a=0;b=mm;
while(b-a>1)
{
mid=(b+a)/2;
d[0]=max(h[0]-mid,1);
flag=0;
for(i=1;i<size;i++)
if(h[i]-d[i-1]<=-mid)
{
flag=1;
break;
}
else
{
d[i]=max(d[i-1]+1,h[i]-mid);
}
if(flag==0)
{
mm=mid;
b=mid;
}
else
{
a=mid;
}
}
return mm;
}
int main()
{
vector<int>h;
int i,j,n;
while(scanf("%d",&n)!=EOF)
{
h.clear();
for(i=0;i<n;i++)
{
scanf("%d",&j);
h.push_back(j);
}
printf("%d\n",minLevel(h));
}
return 0;
}