CF926C Is This a Zebra?

题目描述

你不小心把相机落在了沙漠里,结果它拍了一张有趣的照片。这张照片的分辨率为 $n$ 像素宽,每一列要么全是白色,要么全是黑色。因此,我们可以用一个长度为 $n$ 的 $0$ 和 $1$ 组成的序列来表示这张照片,其中 $0$ 表示对应的列全是白色,$1$ 表示对应的列全是黑色。 你认为这张照片可能拍到了斑马。如果是这样的话,整张照片应该由若干(也可能只有一条)宽度相等、黑白相间的条纹组成。例如,照片 $[0,0,0,1,1,1,0,0,0]$ 可能是一张斑马的照片,而 $[0,0,0,1,1,1,1]$ 则不可能,因为黑色条纹的宽度是 $3$,而白色条纹的宽度是 $4$。给定一张照片,判断它是否可能是一张斑马的照片。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 100000$),表示照片的宽度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq 1$),表示照片的描述。如果 $a_i$ 为 $0$,则第 $i$ 列全是白色;如果 $a_i$ 为 $1$,则第 $i$ 列全是黑色。

输出格式

如果这张照片可能是一张斑马的照片,输出 "YES"(不带引号);否则输出 "NO"。 你可以用任意大小写输出答案。

说明/提示

前两个样例已在题目描述中给出。 在第三个样例中,所有像素都是白色,因此这张照片可以是一张斑马的照片。 在第四个样例中,第一条条纹的宽度为 $3$(白色),第二条条纹的宽度为 $3$(黑色),第三条条纹的宽度为 $2$(白色)。因此,并不是所有条纹的宽度都相等,所以这张照片不是一张斑马的照片。 由 ChatGPT 4.1 翻译