U621016 k strings
题目背景
拼尽全力无法战胜!
题目描述
给定正整数 $n$,正整数 $k$,以及长度为 $n$ 的整数序列:
$$a=a_1,a_2,\cdots, a_n(a_i\in \Z)$$
对于每一对下标 $1\le l\le r\le n$,定义区间 $[l,r]$ 的**去重和**:
$$S(l,r)=\sum_{x\in \operatorname{set}\{a_l,a_{l+1},\cdots,a_r\}} x$$
其中,$\operatorname{set}$ 表示该区间内不同值的集合(即重复的值在求和时只计一次)。
将所有可能的区间去重和看成一个多重集合:
$$S'=\{S(l,r)\mid1\le l\le r\le n\}$$
元素个数为 $|S'|=\frac{n(n+1)}{2}$(相同的和按出现次数重复计入)。
令 $b_1\ge b_2\ge \cdots\ge b_{\frac{n(n+1)}{2}}$ 为按非增序排列的 $S'$ 中元素(允许相同值多次出现)。目标为求 $b_k$,即**第 $k$ 大去重和**。
输入格式
第一行两个整数 $n$ 和 $k$。
第二行 $n$ 个整数 $a_i$。
输出格式
第一行输出一个答案,即第 $k$ 大的去重和。
说明/提示
对于 $20\% $的数据,$1 \le n \le 2000$。
对于另外 $20\%$ 的数据,$0 \le a_i \le 10^9$。
对于 $100\%$ 的数据,$1 \le n \le 100000$, $1 \le k \le 200000$, $0 \le |a_i| \le 10^9$。
数据保证存在第 $k$ 大的和