题目描述
给定一个 1∼n 的排列 p 和一个整数 k,要求找到 p 的一个子序列 {pi1,pi2,⋯,pim}(1≤i1<i2<⋯<im≤n)满足:
- 恰好有 k 个 j 满足 1≤j≤m 且 pij 是 pi1,pi2,⋯,pim 中从小往大数第 j 个。
如果有多解,输出任意一组解即可。如果不存在合法的子序列,输出 −1。
输入格式
第一行两个整数 n,k。
接下来一行 n 个整数 p1,p2,⋯,pn 表示给定的排列。
输出格式
如果无解,输出一行一个整数 −1。
否则第一行输出一个整数 m 表示子序列的长度。你需要保证 1≤m≤n。
接下来一行输出 m 个整数 i1,i2,⋯,im 表示子序列的下标。你需要保证 1≤ij≤n 且 ij<ij+1(1≤j<m)。
4 1
4 2 1 3
3
2 3 4
提示
对于所有数据,1≤n≤105,1≤k≤n,p1,p2,⋯,pn 为 1∼n 的排列。
- 子任务 1(10 分):n≤20。
- 子任务 2(10 分):k=2。
- 子任务 3(30 分):k=3。
- 子任务 4(30 分):n≤103。
- 子任务 5(20 分):无特殊限制。
Source:NFLSPC #6 D by tzc_wk