[NFLSPC #6] 来点不那么魔怔的题面
题目描述
给定一个 $1\sim n$ 的排列 $p$ 和一个整数 $k$,要求找到 $p$ 的一个子序列 $\{p_{i_1}, p_{i_2}, \cdots, p_{i_m}\}$($1\le i_1 < i_2 < \cdots < i_m\le n$)满足:
- 恰好有 $k$ 个 $j$ 满足 $1\le j\le m$ 且 $p_{i_j}$ 是 $p_{i_1}, p_{i_2}, \cdots, p_{i_m}$ 中从小往大数第 $j$ 个。
如果有多解,输出任意一组解即可。如果不存在合法的子序列,输出 $-1$。
输入输出格式
输入格式
第一行两个整数 $n, k$。
接下来一行 $n$ 个整数 $p_1, p_2, \cdots, p_n$ 表示给定的排列。
输出格式
如果无解,输出一行一个整数 $-1$。
否则第一行输出一个整数 $m$ 表示子序列的长度。你需要保证 $1\le m\le n$。
接下来一行输出 $m$ 个整数 $i_1, i_2, \cdots, i_m$ 表示子序列的下标。你需要保证 $1\le i_j\le n$ 且 $i_j < i_{j+1}$($1\le j < m$)。
输入输出样例
输入样例 #1
4 1
4 2 1 3
输出样例 #1
3
2 3 4
说明
对于所有数据,$1\le n\le 10 ^ 5$,$1\le k\le n$,$p_1, p_2, \cdots, p_n$ 为 $1\sim n$ 的排列。
- 子任务 1($10$ 分):$n\leq 20$。
- 子任务 2($10$ 分):$k = 2$。
- 子任务 3($30$ 分):$k = 3$。
- 子任务 4($30$ 分):$n\leq 10 ^ 3$。
- 子任务 5($20$ 分):无特殊限制。
Source:NFLSPC #6 D by tzc_wk