#P9928. [NFLSPC #6] 来点不那么魔怔的题面

[NFLSPC #6] 来点不那么魔怔的题面

题目描述

给定一个 1∼n1\sim n 的排列 pp 和一个整数 kk,要求找到 pp 的一个子序列 {pi1,pi2,⋯ ,pim}\{p_{i_1}, p_{i_2}, \cdots, p_{i_m}\}(1≤i1<i2<⋯<im≤n1\le i_1 < i_2 < \cdots < i_m\le n)满足:

  • 恰好有 kk 个 jj 满足 1≤j≤m1\le j\le m 且 pijp_{i_j} 是 pi1,pi2,⋯ ,pimp_{i_1}, p_{i_2}, \cdots, p_{i_m} 中从小往大数第 jj 个。

如果有多解,输出任意一组解即可。如果不存在合法的子序列,输出 −1-1。

输入格式

第一行两个整数 n,kn, k。

接下来一行 nn 个整数 p1,p2,⋯ ,pnp_1, p_2, \cdots, p_n 表示给定的排列。

输出格式

如果无解,输出一行一个整数 −1-1。

否则第一行输出一个整数 mm 表示子序列的长度。你需要保证 1≤m≤n1\le m\le n。

接下来一行输出 mm 个整数 i1,i2,⋯ ,imi_1, i_2, \cdots, i_m 表示子序列的下标。你需要保证 1≤ij≤n1\le i_j\le n 且 ij<ij+1i_j < i_{j+1}(1≤j<m1\le j < m)。

4 1
4 2 1 3

3
2 3 4

提示

对于所有数据,1≤n≤1051\le n\le 10 ^ 5,1≤k≤n1\le k\le n,p1,p2,⋯ ,pnp_1, p_2, \cdots, p_n 为 1∼n1\sim n 的排列。

  • 子任务 1(1010 分):n≤20n\leq 20。
  • 子任务 2(1010 分):k=2k = 2。
  • 子任务 3(3030 分):k=3k = 3。
  • 子任务 4(3030 分):n≤103n\leq 10 ^ 3。
  • 子任务 5(2020 分):无特殊限制。

Source:NFLSPC #6 D by tzc_wk