UOJ Logo Universal Online Judge

UOJ

统计

给定一个非负整数组成的数列 $a_1,a_2,\ldots,a_n$,你需要把它划分成恰好 $k$ 个非空子区间,使得每个数恰好在一个区间中。定义 $s_i$ 表示从左往右第 $i$ 个区间和,$m_i$ 表示第 $i$ 个区间最左和最右两个元素的最大值(如果区间长度为 1 则 $m_i$ 就是这个唯一的数),你需要保证 $\forall 2 \le i \le k,\lvert s_i-s_{i-1} \rvert \le \max(m_{i-1},m_i)$。

输入格式

第一行两个正整数 $n,k(3 \le k \le n \le 10^5)$。

第二行 $n$ 个非负整数 $a_1,a_2,\ldots,a_n(0 \le a_i \le 5 \times 10^4)$。

输出格式

如果不存在这样的划分方案,你只需要输出一行 $\texttt {No}$。

否则第一行输出 $\texttt{Yes}$,第二行输出 $k-1$ 个整数 $p_1,\ldots,p_{k-1}(1 \le p_1 < p_2 < \ldots < p_{k-1} < n)$,其中 $p_i$ 表示你的划分方案中从左往右第 $i$ 个区间的右端点(显然 $p_k=n$)。如果有多种划分方案,你只需要输出任意一种。

样例输入

5 3
17 18 17 30 35

样例输出

Yes
2 4

限制与约定

  • Subtask 1(20 分):$n \le 1000$
  • Subtask 2(30 分):$k \le 50$
  • Subtask 3(50 分):没有特殊性质

时间限制:$\texttt {1s}$

空间限制:$\texttt {512MB}$