输入:
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;
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务