#include <iostream>
#include<vector>
#include<map>
using namespace std;
vector<int>res;
map<int,int>mp;
int main() {
int n=0,num=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&num);
mp[num]+=num;
}
int val=0;
for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++){
if(res.size()==0){
res.push_back(it->second);
val=it->first;
}
else{
for(int k=val+1; k< it->first; k++){
res.push_back(0);
}
res.push_back(it->second);
val=it->first;
}
}
vector<int>dp(res.size(),0);
dp[0]=res[0];
dp[1]=max(res[0],res[1]);
for(int i=2;i<res.size();i++){
dp[i]=max(res[i]+dp[i-2], dp[i-1]);
}
cout<<dp[res.size()-1]<<endl;
}
lc+yitu算法题
最新推荐文章于 2024-04-02 14:04:40 发布