食堂大作战1.0
题号:NC288797
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}本题与《C.食堂大作战2.0》共享题目背景,但是所求内容与范围均不同,我们建议您重新阅读题面。

\hspace{15pt}你来到食堂吃完了饭,并决定给在寝室沉迷游戏没吃饭的室友一个惊喜——向 Ta 展示今天食堂每一个窗口的饭菜。所以,你要去每个窗口排队拍照,并且发给室友。
\hspace{15pt}食堂目前一共有 n 个窗口,第 i 个窗口目前排了 a_i 个人。假设目前所有窗口排队的人不会再多加,并且每隔相同的时间,所有窗口的第一个人都会同时打完饭离开,如果有第二个人,那么第二个人将会成为新的第一个人,并且开始买饭;如果没有第二个人(队伍没人了),这个窗口将会瞬间关闭。
\hspace{15pt}你将排在队伍的末尾,并且你每次只能选择一个窗口排队。当你位于队列最前面的时候,你可以进行拍照操作。拍照和切换队伍的时间忽略不计(即,排到你的时候,你可以瞬间拍照并切换到另一个队伍末尾排队)。你想要知道,是否存在一个合理的排队顺序,使得你能够在每一个窗口关闭前都拍到一张照片。

输入描述:

\hspace{15pt}第一行输入一个正整数 n \left(1 \leqq n \leqq {\color{orange}{\pmb{10^3}}}\right) 代表食堂窗口总数。
\hspace{15pt}第二行输入 n 个正整数 a_1, a_2, \dots, a_n \left(1 \leqq a_i \leqq 10^9\right) 代表每个窗口的排队人数。

输出描述:

\hspace{15pt}如果存在一个合理的排队顺序,使得你能够在每一个窗口关闭前都拍到一张照片,直接输出 \rm YES,否则输出 \rm NO
示例1

输入

复制
3
1 2 3

输出

复制
YES

说明

\hspace{15pt}合理的排队顺序为:
\hspace{23pt}\bullet\,先去第一个窗口排队,此时三列队伍人数恰好为 \{{\color{orange}{2}},2,3\}
\hspace{23pt}\bullet\,排到自己的时候,三列队伍的人数恰好为 \{1,1,2\},此时,瞬间拍照并跑到第二个队伍末尾,此时三列队伍人数恰好为 \{0,{\color{orange}{2}},2\}
\hspace{23pt}\bullet\,排到自己的时候,三列队伍的人数恰好为 \{0,1,1\},此时,瞬间拍照并跑到第三个队伍末尾,此时三列队伍人数恰好为 \{0,0,{\color{orange}{2}}\}
\hspace{23pt}\bullet\,排到自己的时候,三列队伍的人数恰好为 \{0,0,1\}
示例2

输入

复制
3
1 1 1

输出

复制
NO

说明

\hspace{15pt}在这个样例中,选择任意一个窗口排队拍照,拍完照之后另外的窗口都关了,瞬间转移也没用。
示例3

输入

复制
5
1 14 5 11 4

输出

复制
YES