分析
考虑最多只有两种情况,因为确定一个位置其它位置随即也能确定,
那么指定第一个位置有没有雷然后判断一下后面推出的雷数是否为0或1,不是显然不行
代码
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=10011;
int mine[N],a[N],n,ans;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void doit(){
for (rr int i=2;i<=n+1;++i){
mine[i]=a[i-1]-mine[i-1]-mine[i-2];
if (mine[i]<0||mine[i]>1){--ans; return;}
}
if (mine[n+1]) --ans;
}
signed main(){
n=iut(),ans=2;
for (rr int i=1;i<=n;++i) a[i]=iut();
doit(),mine[1]=1,doit();
return !printf("%d",ans);
}