#1293. USACO 2012 年 1 月比赛 铜牌组 Haybale Stacking

USACO 2012 年 1 月比赛 铜牌组 Haybale Stacking

题目描述

为了弥补最近的一系列恶作剧,奶牛贝西答应帮农夫约翰叠 N 堆干草(N 为奇数)。
初始时,第 1…N 号堆都是空的。
接着,约翰会发出 K 条指令,每条指令形如 A B,表示:

在编号 A…B 的每一堆顶部都再放 1 捆干草

全部指令执行完后,约翰想知道 所有堆高度的中位数
(因为 N 为奇数,排序后直接取第 (N+1)/2 个即可。)

输入格式

  • 第 1 行:两个空格分隔的整数 N K(1 ≤ N ≤ 1 000 000,1 ≤ K ≤ 25 000,N 为奇数)。
  • 第 2…K+1 行:每行两个空格分隔的整数 A B(1 ≤ A ≤ B ≤ N),表示本次指令要加草的堆区间。

输出格式

  • 第 1 行:一个整数,表示最终所有堆高度的中位数

样例

样例输入

7 4
5 5
2 4
4 6
3 5

样例输出

1

样例解释

执行完所有指令后,各堆高度为
0, 1, 2, 3, 3, 1, 0
排序后为 0, 0, 1, 1, 2, 3, 3,中位数为 1

数据范围与提示

  • 1 ≤ N ≤ 1 000 000(保证 N 为奇数)
  • 1 ≤ K ≤ 25 000
  • 1 ≤ A ≤ B ≤ N
  • 区间加 1 可用 差分数组线段树 优化到 O(K + N)。