题目要求构造一个 1∼n 的排列,使逆序对数量恰好为 k。
一个长度为 n 的排列最多有:
2n(n−1)给定两个整数 n,k。请你构造一个长度为 n 的排列,使得它的逆序对数量恰好等于 k。
排列指用 1,2,…,n 这 n 个数各用一次、按任意顺序组成的数组;数组中没有重复数字,也没有超出 1∼n 的数字。
逆序对:在排列中,选择一对下标 i<j,如果前面的数比后面的数大(即 ai>aj),那么这对就算一个逆序对。题目要求排列中的所有这样的对数之和为 k。
每个测试文件包含多组测试数据。第一行输入一个整数 T(1≤T≤2×105),表示测试数据组数。 接下来 T 行,每行输入两个整数 n,k(1≤n≤2×105;0≤k≤2n(n−1))。 除此之外,保证单个测试文件内所有数据的 n 之和不超过 2×105。
对于每组测试数据,输出一行,包含 n 个整数,表示任意一个满足要求的排列。若存在多种答案,输出任意一种均可。
输入
3
3 0
3 2
5 7
输出
1 2 3
3 1 2
5 4 1 2 3
说明
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.