#700. 删除并获得点数

删除并获得点数

740. 删除并获得点数

题目描述

给你一个整数数组 nums,你可以对任意元素执行以下操作:

  • 选择一个元素 x,将其从数组中删除,并获得 x 个点数;
  • 同时,所有等于 x - 1x + 1 的元素也会被自动删除。

目标是通过一系列操作,最大化获得的点数。

注意:每次操作只能选一个元素,且一旦删除某个值,其相邻值(±1)也会被删除。


输入格式

  • 第一行包含一个整数 nn1n2×1041 \leq n \leq 2 \times 10^4),表示数组长度;
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1041 \leq a_i \leq 10^4),表示数组元素 nums

输出格式

输出一个整数,表示在最优操作下可以获得的最大点数。


示例

示例 1:

输入:
3
3 4 2

输出:
6

解释:
先删除 4,得 4 分,同时删除 3 和 5(但 5 不存在),数组变为 [2]
再删除 2,得 2 分。总分为 4+2=64 + 2 = 6


示例 2:

输入:
6
2 2 3 3 3 4

输出:
9

解释:
如果删除数值 3,可以获得 3×3=93 \times 3 = 9 分,同时删除所有 2 和 4;
其他选择不会得到更高得分,因此最大点数为 9。


数据范围

  • 1n2×1041 \leq n \leq 2 \times 10^4
  • 1ai1041 \leq a_i \leq 10^4