#AT1264. D - Median of Medians

D - Median of Medians

D - 中位数的中位数

得分:700分

问题描述

我们定义一个序列 $b$ 的中位数如下:

  • 设 $b'$ 是将 $b$ 按非降序排列得到的序列,那么 $b'$ 的第 $(M / 2 + 1)$ 个元素就是 $b$ 的中位数。这里的 $/$ 表示整数除法(向下取整)。

例如,$(10, 30, 20)$ 的中位数是 $20$;$(10, 30, 20, 40)$ 的中位数是 $30$;$(10, 10, 10, 20, 30)$ 的中位数是 $10$。

Snuke 提出了以下问题。

给定长度为 $N$ 的序列 $a$。 对于每对 $(l, r)$($1 \leq l \leq r \leq N$),设 $m_{l, r}$ 是子序列 $(a_l, a_{l + 1}, ..., a_r)$ 的中位数。 我们将列出所有 $(l, r)$ 对应的 $m_{l, r}$,得到一个新的序列 $m$。 求 $m$ 的中位数。

约束

  • $1 \leq N \leq 10^5$
  • $a_i$ 是一个整数。
  • $1 \leq a_i \leq 10^9$

输入

输入以以下格式从标准输入中给出:

NN

a1a_1 a2a_2 ...... aNa_N

输出

输出 $m$ 的中位数。


3
10 30 20
30

每个子序列的中位数如下:

  • $(10)$ 的中位数是 $10$。
  • $(30)$ 的中位数是 $30$。
  • $(20)$ 的中位数是 $20$。
  • $(10, 30)$ 的中位数是 $30$。
  • $(30, 20)$ 的中位数是 $30$。
  • $(10, 30, 20)$ 的中位数是 $20$。

因此 $m = (10, 30, 20, 30, 30, 20)$,$m$ 的中位数是 $30$。


1
10
10

10
5 9 5 9 8 9 3 5 4 3
8