2821:拆分(split.cpp)

文件提交:文件名:split 内存限制:128 MB 时间限制:1.000 S
评测方式:普通裁判
金币值:1
命题人:
提交:228 解决:59

题目描述


使用freopen提交。文件名:split


鸡尾酒又带着大家学习新定义啦!今天要学习的内容是集合的 mex,集合的

mex 指的是一个集合没有出现过的最小自然数。例如, mex({1,2}) =0、mex({0,1,2,3}) = 4。
现在你有一个包含 n 个元素的集合,你可以将它分成任意个数量的新集合,使

得所有新集合的 mex值之和最大,求这个最大值是多少

点击下载大样例

输入

第一行输入一行一个正整数 n,接下来一行包含 n 个非负整数,表示集合中的
元素 ai。

输出

输出一行一个整数表示答案。

样例输入

5
0 0 1 1 2

样例输出

5

提示

【样例 1 说明】
分成两个集合 {0, 1},{0, 1, 2}, 第一个集合的 mex 为 2,第二个集合的 mex 为
3,两个集合的 mex 之和为 5,这样分集合是最大的。当然也可以分成
{0},{0},{1},{1},{2},但是这样五个集合的 mex 之和为1 + 1 + 0 + 0 + 0 = 2。

【样例 2 输入】
5
1 2 3 4 5
【样例 2 输入】
0

【样例 2 说明】

为原集合没有 0  所以无论怎么分集合,  每一个新集合都不会有 0  所以每一 个集 mex 都为 0,答案一定为  0

数据范围】

题共有 10  个测试点

第一个测试点有 0  <  ai

二个测试点有 ai    =  0

 3 − 4  个测试点有 0 ≤ ai  ≤ 1

对于所有测试点,有 1  ≤  n  ≤  105, 0  ≤  ai    ≤  1000




来源/分类