赛码练习编程题后台 基本算法在线考试 - 正式考试阶段 编程题|20分2/10 Manager 时间限制: 1000MS 内存限制:
65536KB 题目描述: 小明是一个互联网公司的老板,需要招聘员工。现在有k个学校的学生前来应聘。由于特殊原因,要求最后入职的员工学校的人数应该都不一样。
比如我们可以A大学录取5人,B大学录取4人。但是不允许A大学和B大学都录取5人。
请问最后最多录取多少人呢?
输入描述
第一行一个整数k,表示学校的数量。
第二行k个整数ai,表示这个学校有ai个人前来应聘。
满足 1<=k<=100000,1<=ai<=100000
输出描述
输出最多录取人数
样例输入
3
3 3 2
样例输出
6
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
vector<int>v1;
for(int i = 0; i < n; i++){
int m;
cin>>m;
v1.push_back(m);
}
sort(v1.begin(), v1.end());
int count = v1[0];
for(int i = 1; i < v1.size(); i++){
if(v1[i-1] < v1[i]) count += v1[i];
else count = count + v1[i] - i;
}
cout<<count<<endl;
return 0;
}