题意: 略。
思路:考虑数的范围最大为2000,可以开一个2000的数组保存下来。
AC代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=2010;
int a[maxn];
int main(){
int n,k;
while(scanf("%d%d",&n,&k)!=EOF){
memset(a,0,sizeof(a));
for(int i=1; i<=n; i++) {
int x;
scanf("%d",&x);
a[x]++;
}
int c=0;
int s=0;
for(int i=1;i<=2010; i++){
if(a[i]){
while(a[i]){
s+=i;
c++;
if(c==k) break;
a[i]--;
}
if(c==k) break;
}
}
printf("%d\n",s);
}
return 0;
}