题目背景
数据范围较赛时加强。
- 2023.04.25:发现 1.50s 时限过于卡常,扩大到 2.00s。
题目描述
给定一个 1∼n 的序列,每个位置 i 有 k 个参数 ai,1,ai,2,…,ai,k。已知这个序列是一个按照大根堆的 bfs 序得到的序列。
bfs 序,即按照下图中红色数字编号的顺序:

一个大根堆满足条件,当且仅当所有子节点的所有 k 个权值都小于等于父节点,即 ∀u∈[1,n],∀v∈son(u),∀j∈[1,k],av,j≤au,j。
假设这个大根堆是完全 m 叉树,求所有 m∈[1,n−1],使得这个 m 叉堆满足条件的 m 的取值。
输入格式
第一行两个整数 n,k。
接下来 k 行,每行 n 个整数,表示给定的序列。其中,第 i+1 行第 j 列表示的是 aj,i。
可以理解为,分成 k 行给出了所有位置的 k 个参数。
输出格式
第一行一个整数 A,表示所有可能的 m 的取值数量。
接下来一行 A 个整数,表示所有的可能的 m 的取值。
提示
样例解释
样例 1 中,1,2 叉堆显然都符合条件。
数据范围
子任务编号 |
n≤ |
分值 |
1 |
103 |
20 |
2 |
5×104 |
3 |
2×105 |
60 |
对于 100% 的数据,保证 1≤n≤2×105,1≤k≤8,−107≤ai,j≤107。