P11413 [EPXLQ2024 fall round] 好排列
题目背景
温昭雪喜欢构造排列。
题目描述
她的目标是构造一个由 $n$ 个数组成的排列 $A_1,A_2,\dots,A_n$,初始时 $A$ 中的所有元素都是 $0$。
接下来,对于数 $i$($1 \le i \le n$),她通过下面方式由 $1$ 到 $n$ 确定其位置:
- 如果 $i=1$,将其放到最左侧。
- 如果 $i=2$,将其放到最右侧。
- 如果都不是,定义 $f_0(x)$ 表示 $x$ 左侧(包含 $x$,下同)的连续的 $0$ 的个数,$g_0(x)$ 为 $x$ 右侧的连续的 $0$ 的个数。特别地,如果 $x \le 0$ 或 $x > n$,$f_0(x)=g_0(x)=n+1$。
- 定义 $f_1(x)$ 表示 $x$ 左侧的连续非 $0$ 位置的个数,$g_1(x)$ 表示 $x$ 右侧的连续非 $0$ 位置的个数。特别地,如果 $x \le 0$ 或 $x > n$,$f_0(x)=g_0(x)=0$。
- 如果存在位置 $j$,使得 $\min(f_0(j), g_0(j)) > 1$,则选择位置 $j$ 最大化 $\min(f_0(j), g_0(j))$。如果有多个位置的值相同,选择 $j$ 较小的。
- 如果不存在这样的位置,则选择位置 $j$ 使得 $f_0(j)=1$ 并最小化 $f_1(j-1) + g_1(j+1)$。如果有多个位置的值相同,选择 $j$ 较小的。
温昭雪的幸运数字是 $k$。为了避免输出过多,她只想知道数字 $k$ 处于排列的什么位置。
输入格式
**本题单个测试点内有多组测试数据。**
输入第一行 $T$,表示数据组数。
以下 $T$ 行,每行两个正整数 $n,k$。
输出格式
输出 $T$ 行,每行一个正整数 $x$,表示排列长度为 $n$ 时,$A_x=k$。
说明/提示
### 样例解释
第一组测试数据对应的排列为 $\{1,3,2\}$。
第二组测试数据对应的排列为 $\{1,5,3,4,6,2\}$。
### 数据规模与约定
| 测试点编号 | $n$ | $k$ | $T$ | $\sum n$ | 特殊性质 |
|:-:|:-:|:-:|:-:|:-:|:-:|
| $1,2$ | $\le 10$ | $\le 10$ | $\le 10$ | $\le 100$ | |
| $3,4$ | $\le 100$ | $\le 100$ | $\le 10$ | $\le 1000$ | |
| $5$ | $\le 1000$ | $\le 10$ | $\le 10$ | $\le 10^4$ | |
| $6,7$ | $\le 1000$ | $\le 1000$ | $\le 100$ | $\le 10^5$ |
| $8,9$ | $\le 10^4$ | $\le 10$ | $\le 100$ | $\le 10^5$ |
| $10 \sim 13$ | $\le 10^4$ | $\le 10^4$ | $\le 100$ | $\le 10^6$ | $n,k$ 均为奇数 |
| $14 \sim 17$ | $\le 10^4$ | $\le 10^4$ | $\le 100$ | $\le 10^6$ | $n,k$ 均为偶数 |
| $18,19$ | $\le 10^5$ | $\le 10$ | $\le 10$ | $\le 10^5$ | |
| $20,21$ | $\le 10^5$ | $\le 10^5$ | $\le 100$ | $\le 10^6$ | |
| $22\sim 25$ | $\le 10^6$ | $\le 10^6$ | $\le 100$ | $\le 10^6$ | |
对于奇数编号的测试点,内存限制为 $\text{512 MB}$;对于偶数编号的测试点,内存限制为 $\text{64 MB}$。
对于所有数据,保证 $1 \le k \le n \le 10^6, \sum n \le 10^6$。