#include<iostream>
using namespace std;
int main()
{
int a[100010];//怪物生命
long long b[100010];//生命加盾
int n;
cin>>n;
for(int q=1;q<=n;q++)scanf("%d",&a[q]),b[q]=a[q];
for(int q=n;q>1;q--)//盾的处理
{
if(a[q-1]%2==0)b[q]+=a[q-1]/2;
else
b[q]+=(a[q-1]-1)/2;
}
int g=0;//已通过关卡数
long long d=0,c=0;
//d当前能力值 c初始能力值
while(g<n)
{
if(d<=b[g+1])//无法通过下一关
{
long long t=b[g+1]+1;//通过下一关需要的能力值
long long x=t-d;//提升的能力值
c+=x;//初始提升的能力值
d=t;
t=(a[g+1]-1)/2;//通过增加的生命值
d+=t; //增加生命值
g++;//关卡加一
}
else
{
int t=(a[g+1]-1)/2;//通过增加的生命值
d+=t; //增加生命值
g++; //关卡加一
}
}
cout<<c;
return 0;
}
全部评论
(0) 回帖