#P15470. 档案排列

    ID: 14685 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 8 上传者: 标签>CF2500动态规划贪心数学树状数组计数DP构造

档案排列

题目描述

档案馆中有 nn 份编号为 11nn 的档案。现在需要把这 nn 份档案排成一个排列。

对于一个排列 p1,p2,,pnp_1,p_2,\ldots,p_n,如果一对下标 (i,j)(i,j) 满足:

1i<jn,pi<pj1\le i<j\le n,\quad p_i<p_j

那么称 (i,j)(i,j) 是这个排列中的一个 顺序对

现在给定三个整数 n,k,mn,k,m。你需要找出所有长度为 nn、且恰有 mm 个顺序对的排列,并按照字典序从小到大排序。

请输出其中字典序第 kk 小的排列。

为了方便,保证 mm 在下面这个区间内均匀随机生成:

0mn(n1)20\le m\le \frac{n(n-1)}{2}

如果不存在第 kk 小的合法排列,输出 -1

输入格式

输入一行三个非负整数 n,k,mn,k,m

输出格式

如果无解,输出一行 -1

否则输出一行 nn 个正整数,表示字典序第 kk 小的合法排列。

样例 1 输入

5 4 2

样例 1 输出

4 5 3 1 2

样例 1 解释

顺序对数恰为 22 的长度为 55 的排列有:

3 5 4 2 1
4 3 5 2 1
4 5 2 3 1
4 5 3 1 2
5 2 4 3 1
5 3 2 4 1
5 3 4 1 2
5 4 1 3 2
5 4 2 1 3

其中,字典序第 44 小的排列为:

4 5 3 1 2

样例 2 输入

10 1145141919810 6

样例 2 输出

-1

样例 2 解释

长度为 1010 且顺序对数恰好为 66 的排列不足 11451419198101145141919810 个,因此无解。

样例 3,4,5

见选手目录下:

  • perm/ex_perm.3-5.in
  • perm/ex_perm.3-5.out

测试点约束

对于所有数据,满足:

1n2×1051\le n\le 2\times 10^5 1k10181\le k\le 10^{18} 0mn(n1)20\le m\le \frac{n(n-1)}{2}

各子任务如下:

  • 子任务 1:n=8n=8,无特殊性质,分值 10。
  • 子任务 2:n=18n=18,无特殊性质,分值 10。
  • 子任务 3:n=100n=100,无特殊性质,分值 15。
  • 子任务 4:n=3000n=3000,无特殊性质,分值 15。
  • 子任务 5:n=105n=10^5k=1k=1,分值 15。
  • 子任务 6:n=105n=10^5,无特殊性质,分值 20。
  • 子任务 7:n=2×105n=2\times 10^5,无特殊性质,分值 15。