#P11413. [EPXLQ2024 fall round] 好排列

[EPXLQ2024 fall round] 好排列

背景

温昭雪喜欢构造排列。

题目描述

她的目标是构造一个由 nn 个数组成的排列 A1,A2,…,AnA_1,A_2,\dots,A_n,初始时 AA 中的所有元素都是 00。

接下来,对于数 ii(1≤i≤n1 \le i \le n),她通过下面方式由 11 到 nn 确定其位置:

  • 如果 i=1i=1,将其放到最左侧。

  • 如果 i=2i=2,将其放到最右侧。

  • 如果都不是,定义 f0(x)f_0(x) 表示 xx 左侧(包含 xx,下同)的连续的 00 的个数,g0(x)g_0(x) 为 xx 右侧的连续的 00 的个数。特别地,如果 x≤0x \le 0 或 x>nx > n,f0(x)=g0(x)=n+1f_0(x)=g_0(x)=n+1。

  • 定义 f1(x)f_1(x) 表示 xx 左侧的连续非 00 位置的个数,g1(x)g_1(x) 表示 xx 右侧的连续非 00 位置的个数。特别地,如果 x≤0x \le 0 或 x>nx > n,f0(x)=g0(x)=0f_0(x)=g_0(x)=0。

  • 如果存在位置 jj,使得 min⁡(f0(j),g0(j))>1\min(f_0(j), g_0(j)) > 1,则选择位置 jj 最大化 min⁡(f0(j),g0(j))\min(f_0(j), g_0(j))。如果有多个位置的值相同,选择 jj 较小的。

  • 如果不存在这样的位置,则选择位置 jj 使得 f0(j)=1f_0(j)=1 并最小化 f1(j−1)+g1(j+1)f_1(j-1) + g_1(j+1)。如果有多个位置的值相同,选择 jj 较小的。

温昭雪的幸运数字是 kk。为了避免输出过多,她只想知道数字 kk 处于排列的什么位置。

输入格式

本题单个测试点内有多组测试数据。

输入第一行 TT,表示数据组数。

以下 TT 行,每行两个正整数 n,kn,k。

输出格式

输出 TT 行,每行一个正整数 xx,表示排列长度为 nn 时,Ax=kA_x=k。

2
3 1
6 4
1
4

提示

样例解释

第一组测试数据对应的排列为 {1,3,2}\{1,3,2\}。

第二组测试数据对应的排列为 {1,5,3,4,6,2}\{1,5,3,4,6,2\}。

数据规模与约定

测试点编号 nn kk TT ∑n\sum n 特殊性质
1,21,2 ≤10\le 10 ≤10\le 10 ≤100\le 100
3,43,4 ≤100\le 100 ≤1000\le 1000
55 ≤1000\le 1000 ≤10\le 10 ≤104\le 10^4
6,76,7 ≤1000\le 1000 ≤100\le 100 ≤105\le 10^5
8,98,9 ≤104\le 10^4 ≤10\le 10
10∼1310 \sim 13 ≤104\le 10^4 ≤106\le 10^6 n,kn,k 均为奇数
14∼1714 \sim 17 n,kn,k 均为偶数
18,1918,19 ≤105\le 10^5 ≤10\le 10 ≤105\le 10^5
20,2120,21 ≤105\le 10^5 ≤100\le 100 ≤106\le 10^6
22∼2522\sim 25 ≤106\le 10^6

对于奇数编号的测试点,内存限制为 512 MB\text{512 MB};对于偶数编号的测试点,内存限制为 64 MB\text{64 MB}。

对于所有数据,保证 1≤k≤n≤106,∑n≤1061 \le k \le n \le 10^6, \sum n \le 10^6。