luogu#P11413. [EPXLQ2024 fall round] 好排列

[EPXLQ2024 fall round] 好排列

题目背景

温昭雪喜欢构造排列。

题目描述

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

接下来,对于数 ii1in1 \le i \le n),她通过下面方式由 11nn 确定其位置:

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

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

  • 如果都不是,定义 f0(x)f_0(x) 表示 xx 左侧(包含 xx,下同)的连续的 00 的个数,g0(x)g_0(x)xx 右侧的连续的 00 的个数。特别地,如果 x0x \le 0x>nx > nf0(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 位置的个数。特别地,如果 x0x \le 0x>nx > nf0(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(j1)+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
101310 \sim 13 104\le 10^4 106\le 10^6 n,kn,k 均为奇数
141714 \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
222522\sim 25 106\le 10^6

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

对于所有数据,保证 1kn106,n1061 \le k \le n \le 10^6, \sum n \le 10^6