P9143 [THUPC 2023 初赛] 众数

题目描述

你有若干个 $[1,n]$ 内的正整数:对于 $1 \le i \le n$,你有 $a_i$ 个整数 $i$。设 $S = \sum_{i=1}^n a_i$。 对于一个序列 $p_1,p_2,\cdots,p_l$,定义其众数 $\text{maj}(p_1,p_2,\cdots,p_l)$ 为出现次数最多的数。若有多个数出现次数最多,则其中最大的数为其众数。 现在你需要把这 $S$ 个数排成一个序列 $b_1,b_2,\cdots,b_S$,使得 $\sum_{i=1}^S \text{maj}(b_1,b_2,\cdots,b_i)$ 最大。输出该最大值。

输入格式

第一行一个整数 $n$,表示值域。 接下来一行 $n$ 个正整数 $a_1,a_2,\cdots,a_n$,表示每种数的个数。

输出格式

输出一行一个正整数表示 $\sum_{i=1}^S \text{maj}(b_1,b_2,\cdots,b_i)$ 的最大值。

说明/提示

#### 样例解释 1 一个达到最大值的序列为 $(3,2,3,1,2,2)$。 #### 数据范围 对于所有测试数据,$1 \le n \leq 10^5$,$1 \le a_1,a_2,\cdots,a_n \le 10^5$。 #### 题目来源 来自 2023 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2023)初赛。 题解等资源可在 查看。