题目描述
给定一个长度为 n 的数组和一个正整数 k,数组元素固定为 [1,2,3,...,n],其中 n 一定是奇数。
现在你需要选择一个奇数 m,并将 a 拆分成 m 个子数组 b1,b2,...,bm,使得:
- 数组 a 的每个元素都属于且仅属于一个子数组。
- 拆分出来的所有子数组的长度都是奇数。
- 所有子数组的中位数组成的数组,其中位数必须等于 k。
子数组的概念:对于 1≤l≤r≤n,那么[al,al+1,...,ar] 就是 a 的子数组。
中位数的概念:在奇数长度数组中,数组按照升序排序后的中间元素即中位数,例如 [1,2,3,4,5] 的中位数是 3。
输入
第一行包含一个整数 t,代表测试样例的组数。 (1≤t≤5000)
对于每组测试样例:
第一行输入两个整数 n 和 k (1≤k≤n≤2×105),且保证 n 是奇数
数据保证所有的 n 总和不超过2⋅105.
输出
对于每组测试样例:
如果没有合适的分配方案,则输出 −1。
如果有,那么输出两行。
第一行输出一个奇数整数 m,表示分出来的子数组数量。
第二行输出 m 个整数 p1,p2,...,pm,1=p1<p2<p3<…<pm≤n,pi 表示第 i 个子数组的左边界。
具体的说,对于有效答案 [p1,p2,...,pm],其含义为子数组的划分是:
- $b_1 = \left[ a_{p_1}, a_{p_1 + 1}, \ldots, a_{p_2 - 1} \right]$
- $b_2 = \left[ a_{p_2}, a_{p_2 + 1}, \ldots, a_{p_3 - 1} \right]$
- …
- $b_m = \left[ a_{p_m}, a_{p_m + 1}, \ldots, a_n \right]$.
若有多个答案,输出任意一个满足条件的即可。
4
1 1
3 2
3 3
15 8
1
1
3
1 2 3
-1
5
1 4 7 10 13
Note
对于样例四,分区结果为:
b1=[1,2,3],中位数为 2;
b2=[4,5,6],中位数为 5;
b3=[7,8,9],中位数为 8;
b4=[10,11,12],中位数为 11;
b5=[13,14,15],中位数为 14;
所以得到的中位数数组是 [2,5,8,11,14],该数组的中位数是 8,满足要求。