C. Boredom
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decided to play it.

Given a sequence a consisting of n integers. The player can make several steps. In a single step he can choose an element of the sequence (let's denote it ak) and delete it, at that all elements equal to ak + 1 and ak - 1 also must be deleted from the sequence. That step brings ak points to the player.

Alex is a perfectionist, so he decided to get as many points as possible. Help him.

Input

The first line contains integer n (1 ≤ n ≤ 105) that shows how many numbers are in Alex's sequence.

The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 105).

Output

Print a single integer — the maximum number of points that Alex can earn.

Examples
input
2
1 2
output
2
input
3
1 2 3
output
4
input
9
1 2 1 3 2 2 2 2 3
output
10
Note

Consider the third test example. At first step we need to choose any element equal to 2. After that step our sequence looks like this[2, 2, 2, 2]. Then we do 4 steps, on each step we choose any element equals to 2. In total we earn 10 points.

比赛中遇到的dp题,比赛时没有思路,赛后有点思路但不完善,听了讲解后算是懂了,还需要多积累。

若取当前的值,则与其相邻的值就不能取,故状态转移方程:

  dp[i][0]=max(dp[i-1][0],dp[i-1][1]);

  dp[i][1]=dp[i-1][0]+value[i];

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std; long long vis[];
long long dp[][];
long long value[];
int main()
{
int n,num;
scanf("%d",&n);
for(int i=; i<=n; i++)
{
scanf("%d",&num);
vis[num]++;
}
int cnt=;
for(int i=;i<=1e5;i++)
{
dp[i][]=max(dp[i-][],dp[i-][]);
dp[i][]=dp[i-][]+vis[i]*i;
}
//cout<<dp[cnt-1][0]<<endl<<dp[cnt-1][1]<<endl;
printf("%I64d\n",dp[][]>dp[][]?dp[][]:dp[][]);
return ;
}

最新文章

  1. 沙盒解决方案解决SharePoint 2013 以其他身份登陆的问题
  2. XP 安装Oralce 10g 数据库
  3. windows系统nginx配置root绝对路径的问题
  4. ORACLE查看表空间对象
  5. hbase表结构设计
  6. 面试相关的技术问题---java基础
  7. Java使用JAX-WS来写webservice时 Unable to create JAXBContext
  8. CSS中Position属性
  9. Chromium如何显示Web页面
  10. BZOJ 4057: [Cerc2012]Kingdoms( 状压dp )
  11. 字典实体类:DictionaryEntry类
  12. ICC_lab总结——ICC_lab2:设计规划
  13. 使用JS控制伪元素的几种方法
  14. typescript简介
  15. 看懂 ,学会 .NET 事件的正确姿势-简单版
  16. .Net Core小技巧 - Swagger适配虚拟目录及二级目录
  17. head first c初探网络编程上
  18. Linux 源码安装 Python3
  19. 【SVN】SVN初识
  20. golang 创建一个简单的资源池,重用资源,减少GC负担

热门文章

  1. 魔兽 如何屏蔽F1键弹出帮助菜单
  2. poj3211Washing Clothes(字符串处理+01背包) hdu1171Big Event in HDU(01背包)
  3. NPOI2.2.0.0实例详解(十)—设置EXCEL单元格【文本格式】 NPOI 单元格 格式设为文本 HSSFDataFormat
  4. 【面试加分项】java自己定义注解之解析注解
  5. java 学习第一步---安装JDK以及配置环境变量
  6. What does jQuery.fn mean?
  7. bzoj3295 洛谷P3157、1393 动态逆序对——树套树
  8. JQuery操作下拉框
  9. 830C
  10. jQuery:has()和jQuery:contains()及jQuery:empty