列表
题目信息
时间限制: 1s
空间限制: 512M
输入文件: list.in
输出文件: list.out
题目描述
有一个长度为 2N+1 的整数列表 a,初始恰好为 2N+1 的排列。有一个集合 S 初始为空。进行 N+1 次操作,第 i 次操作如下:
- 选择列表最中间位置的数(第 N+2−i 个数),从列表中删除该数字,并将该删除的数字加入集合 S。
- 如果不是最后的第 N+1 次操作,则再任选列表中的一个数字删除。
操作结束后,列表为空,集合 S 包含了 N+1 个数字。
你需要求出集合 S 里面的单个连续数字段的最大可能值。一个连续数字段指集合 S 的一个子集,满足这个子集的数去重排序之后任意相邻两个数差全部都为 1。(大小为 0,1 的子集也算连续数字段)
输入格式
输入文件名为 list.in。
第一行一个非负整数 N。
第二行 2N+1 个整数,表示初始列表 a。保证 1 到 2N+1 的整数出现各一次。
输出格式
输出文件名为 list.out。
一行一个非负整数表示连续数字段的最大可能值。
样例
样例输入 1
样例输出 1
样例解释 1
- 开始列表为 4,7,3,6,1,2,5,S 加入 6,删去 1,结束后 S={6}。
- 列表为 4,7,3,2,5,S 加入 3,删去 7,结束后S={3,6}。
- 列表为 4,2,5,S 加入 2,删去 5,结束后 S={2,3,6}。
- 列表为 4,S 加入 4,结束后 S={2,3,4,6}。
样例输入 2
文本
7
1 15 2 14 3 13 4 12 5 11 6 10 7 9 8
样例输出 2
样例输入 3
样例输出 3
数据范围与提示
对于 100% 的数据,1≤N≤2×105。保证列表中恰好出现 1 到 2N+1 各一次。
- 子任务 1(10 分):1≤N≤10;
- 子任务 2(30 分):1≤N≤500;
- 子任务 3(30 分):1≤N≤5×104;
- 子任务 4(5 分):列表初始顺序为从小到大;
- 子任务 5(25 分):无特殊限制;