[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