编程题
### 问题描述 现在有一堆苹果,进行 $k-1$ 次划分,每次划分是任意选定一堆数量大于 $2$ 的苹果堆并将该堆苹果划分成两堆苹果,假设选定的一堆苹果数量为 $v$ 则划分后两堆苹果的数量分别为 $\lfloor {v\over2} \rfloor$ 和 $\lceil {v\over2} \rceil$。 进行 $k-1$ 次划分后得到 $k$ 堆苹果,将 $k$ 堆苹果按任意顺序排成 一列,得到一个苹果数量的序列。 现在给定 $k$ 和一个长度为 $k$ 的 $a$ 数组,$a$ 数组表示进行 $k-1$ 次划分后苹果数量的序列,请你判断是否存在一种可行的划分方式使得划分后的苹果数量序列为给定的 $a$ 数组,即判断 $a$ 数组是否合法。 合法输出 $yes$,不合法输出 $no$。 ### 输入格式 第一行包含一个正整数 $k$,表示 $a$ 数组的长度。 第二行包含 $k$ 个由空格隔开的整数,表示 $a$ 数组的元素,第 $i$ 个数为 $a_i$。 ### 输出格式 输出共 $1$ 行,若 $a$ 数组合法则输出 $yes$,否则输出 $no$。 ### 样例输入 ```text 4 5 3 1 1 ``` ### 样例输出 ```text yes ``` ### 说明 在样例中,一开始苹果堆有 $10$ 个,第一次划分成 $[5,5]$,第二次划分成 $[5,3,2]$,第三次划分成 $[5,3,1,1]$,说明 $a$ 数组合法输出 $yes$。 ### 评测数据规模 对于所有评测数据,$1\leq k \leq 5\times 10^4$,$1\leq a_i \leq 10^9$。
查看答案
赣ICP备20007335号-2