AT_arc101_b [ABC107D] Median of Medians

题目描述

长度为 $M$ 的数列 $b$ 的**中位数**定义如下: - 将 $b$ 按升序排序得到数列 $b'$。此时,$b'$ 的第 $M\ /\ 2\ +\ 1$ 个元素的值即为 $b$ 的中位数。这里,$/$ 表示向下取整的除法。 例如,$(10,\ 30,\ 20)$ 的中位数是 $20$,$(10,\ 30,\ 20,\ 40)$ 的中位数是 $30$,$(10,\ 10,\ 10,\ 20,\ 30)$ 的中位数是 $10$。 すぬけ君想出了如下的问题。 给定一个长度为 $N$ 的数列 $a$。对于每一组 $(l,\ r)$($1\leq l\leq r\leq N$),定义 $a$ 的连续子序列 $(a_l,\ a_{l+1},\ ...,\ a_r)$ 的中位数为 $m_{l,r}$。将所有 $(l,\ r)$ 对应的 $m_{l,r}$ 按顺序排列,得到新的数列 $m$。请你求出 $m$ 的中位数。

输入格式

输入以如下格式从标准输入给出。 > $N$ $a_1$ $a_2$ $...$ $a_N$

输出格式

输出 $m$ 的中位数。

说明/提示

## 限制条件 - $1\leq N\leq 10^5$ - $a_i$ 是整数。 - $1\leq a_i\leq 10^9$ ## 样例解释 1 $a$ 的每个连续子序列的中位数如下: - $(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$。 由 ChatGPT 4.1 翻译