#include <iostream>
#include <vector>
using namespace std;
int main() {
int m;
cin >> m;
vector<int> metrix(m);
for (int i = 0; i < m; ++i) {
cin >> metrix[i];
}
int n;
cin >> n;
int can_place = 0; // 记录最多能放几个1
for (int i = 0; i < m; ++i) {
if (metrix[i] == 0) {
int left = (i == 0) ? 0 : metrix[i - 1];
int right = (i == m - 1) ? 0 : metrix[i + 1];//简单处理边界
if (left == 0 && right == 0) {
metrix[i] = 1; // 放一个1
can_place++;
if (can_place >= n) break; // 已经够了,break
}
}
}
/*贪心(Greedy)算法的核心原则是:每一步都做当前看来最优的选择,不回头,期望整体也是最优的。
🎯 贪心策略是:只要当前位置左右都不是 1,就把 0 变成 1,立即放!
为什么这样做是对的?
因为一旦你错过这个位置,往后再放就会错过一次机会(相邻了)。
提前放保证了“最多能放多少”,这是我们要的目标。
*/
cout << (can_place >= n ? "true" : "false") << endl;
return 0;
}