输入:
4 5 2 3 4 5
输出:
4
#include<bits/stdc++.h>
using namespace std;
int main( )
{
//获取输入
int n,m;
cin>>n>>m;
int c[50];
for(int i = 0 ; i < n ; i++){
cin>>c[i];
}
sort(c,c+n);
int res = 0,flag = 1;
while(m&&flag){
//先用r卡替换当前数量最少的卡牌,一次只能替换一张
m--;// 消耗一张r卡
for(int i = 1 ; i < n ; i++){
if(c[i]>=1){
c[i]--; //消耗其他卡牌
if(c[i]<c[i+1]){ //(*)
swap(c[i],c[i+1]);
}
}
else { //说明已经不够凑出一套卡牌
flag = 0;
break;
}
}
if(flag)res++;
//sort(c,c+n); 在此排序超时了,故改成(*)的排序
}
if(flag){
res+=c[0];
}
cout<<res<<endl;
return 0;
}