#D0957. 相邻配对

相邻配对

相邻配对

题目描述

33DAI 在桌上摆了一排 nn 堆糖果,第 ii 堆有 aia_i 颗。

Tom 每次可以选相邻的两堆,各拿走 11 颗糖(也就是让这两堆同时减 11)。如果选中的两堆里有任何一堆已经空了,这一步就不能做。

请问 Tom 能不能把所有糖果都拿走(也就是让所有 aia_i 都变成 00)?

能就输出 YES,不能就输出 NO。

输入格式

第一行一个整数 nn。

第二行 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n。

输出格式

一行,YES 或 NO。

样例

3
2 3 1
YES
2
4 1
NO

样例说明

样例 1: a=[2,3,1]a=[2,3,1],可以这样操作:

  • 选第 1,21,2 堆做 22 次:[2,3,1]→[0,1,1][2,3,1]\to[0,1,1];
  • 选第 2,32,3 堆做 11 次:[0,1,1]→[0,0,0][0,1,1]\to[0,0,0]。

所有糖果都被拿走了,所以输出 YES。

样例 2: a=[4,1]a=[4,1]。这里只有第 1,21,2 堆这一对相邻,每次操作让两堆各减少 11 颗。 第 22 堆只有 11 颗,最多只支持 11 次操作,而第 11 堆要减少 44 次才能归零。 所以不存在合法的操作方案,输出 NO。

数据范围

对于全部数据,1≤n≤1051\le n\le 10^{5},0≤ai≤1090\le a_i\le 10^{9}。

子任务 分值 限制
1 3030 n≤10n\le 10
2 n≤1000n\le 1000
3 4040 1≤n≤1051\le n\le 10^{5}

每个子任务的计分方式为 min(取该子任务中所有测试点的最低分)。

子任务之间存在依赖:子任务 2 依赖子任务 1,子任务 3 依赖子任务 2。即只有通过了所依赖的子任务,该子任务才能得分。