问题描述
kAc有n堆糖果,每堆有A[i]个。
kAc说你只能拿m次糖果,聪明的你当然想要拿最多的糖果来吃啦啦啦~
//第二天,kAc问你还想吃糖果么?(嘿嘿嘿)说着眼角路出奇怪的微笑...
输入格式
第一行两个数字n和m,第二行有n个数字A[i]。
输出格式
输出一行表示最多能拿几个糖果。
样例输入
2 2
1 2
样例输出
3
数据规模和约定
0<n≤1000
其余数字都是不超过1,000,000,000的非负整数。
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
//由于数据规模限制,采用字符串处理
bool cmp(string a,string b){
if(a.size()==b.size())return a>b;
else return a.size()>b.size();
}
int main(void){
int n,m,ax[15]={0};
cin>>n>>m;
string p[n];
for(int i=0;i<n;i++)cin>>p[i];
sort(p,p+n,cmp);
if(m){
for(int i=0;i<m;i++){
int s=0,a,b,ai=p[i].size()-1,bi=0;
do{
a=(bi<15?ax[bi]:0);
b=(ai>=0?p[i][ai--]-'0':0);
s=s+a+b;
ax[bi++]=s%10;
s/=10;
}while(ai+1||s);
}
for(int i=0,flg=1;i<15;i++){
if(flg&&!ax[14-i])continue;
else{
flg=0;cout<<ax[14-i];
}
}
}
else cout<<'0';
return 0;
}