RT
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef long long ll;
vector<ll> f,cundang;
ll v,n,tmp;
ll ans=2147483647,now;
bool flag=true;
void get_back(){
ll x=f[0];
f.erase(f.begin());
f.push_back(x);
}
int main(){
cin>>v>>n;
for(ll i=0;i<n;i++){
cin>>tmp;
f.push_back(tmp);
}
sort(f.begin(),f.end());
reverse(f.begin(),f.end());
cundang=f;
while(f!=cundang or flag){
if(flag)flag=!flag;
now=0;
for(ll i=0;i<n;i++){
now+=f[i];
if(now>v){
now-=f[i];
break;
}
}
now=v-now;
ans=min(now,ans);
get_back();
}
cout<<ans;
return 0;
}
主要就是枚举所有情况,选最小值qwq