/* 一开始并没有想清楚这题该怎么解出,走了许多弯路 我一开始以为此题的关键在于数组中的偶数元素,如果偶元素的后面还是偶元素,前一个偶元素就能当作0来处理; 后来又想,是不是前后两个数字,分别减去两者中的最小值 然后想来许多许多的角度 最后发现...还是我自己想得太多了,这题其实没那么麻烦,无非是,遇到偶数取余,遇到零判断下一个,若遇到奇数,先判断后面还有没有元素,没有则输出"NO"并退出循环,否则判断其后面是不是0.是0则输出"NO"并退出循环,否则当前判断的数组元素置0(之所以为0.是因为自减以后,肯定变成偶数了,偶数有一种优惠可用,那天的绝对可以买到).而它后面的元素自减...如此循环往复,直到遍历数组中所有的元素 */
#include <bits/stdc++.h> const int N = 200005; int num[N]; using namespace std; int main() { int n; while (cin >> n) { bool jud = true; for (int i = 0; i < n; i++) cin >> num[i]; for (int i = 0; i < n; i++) { if (num[i] >= 2) num[i] %= 2; if (num[i] == 0) continue; if (i == n - 1) { jud = false; break; } else { if (num[i + 1]) { num[i + 1]--; num[i] = 0; } else { jud = false; break; } } } if (jud) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }