容易发现只有左右两边都是0的时候才能修改为1,否则必定和左右两边任意一个1相邻,然后贪心地修改为1,只需要判断可以被执行的位置数量超过m没有即可

#include <bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int N=2e5+7;
const int M=1e9;
typedef long long ll;
typedef pair<int,int> pii;
int n,s[N],b[N];
ll m,k,ans;

void solve(){
	cin>>n;
	rep(i,1,n)cin>>s[i];
	cin>>k;
	rep(i,1,n-1){
		if(!s[i] && !s[i-1] && !s[i+1]){
			s[i]=1;
			k--;
			if(k<0){
				cout<<"true";
				return;
			}
		}
	}
	cout<<"false";
}
int main(){
	ios::sync_with_stdio(false),cin.tie(0);
	int tt=1;
	//cin>>tt;
	while(tt--)solve();
	return 0;
}