#include<cstdio>
#include<set>
#include<algorithm>
#define int long long
using namespace std;
const int maxn=10010;
multiset<int>s;
int n,k,a[maxn],ans=0x3f3f3f3f,now;
signed main(){
scanf("%lld%lld",&n,&k);
for(int i=1;i<=k;i++) scanf("%lld",&a[i]),s.insert(a[i]),now+=a[i];
while(now<ans){
if(s.size()==n) ans=min(ans,now);
auto it=s.begin();
int tmp=*it;
s.erase(it),now-=*it;
for(int i=1;i<=k;i++) s.insert(a[i]+tmp),now+=a[i]+tmp;
while(s.size()>n) now-=*(--s.end()),s.erase(--s.end());
}
printf("%lld",ans);
return 0;
}
这题经历了多次迭代,每次最坏nlogn求总时间复杂度