WA30分求调(现已AC)


image
image

#include<bits/stdc++.h>
using namespace std;
long long n,h[21],sum=0,ans=2147483647,b;
void dfs(long long t){
  if(sum>=b){
    ans=min(ans,sum-b);
    if(ans==0){
      cout<<0;
      exit(0);
    }return;
  }for(long long i=t;i<n;i++){
    sum+=h[t];
    dfs(i+1);
    sum-=h[t];
  }
}int main(){
  cin>>n>>b;
  for(int i=0;i<n;i++)cin>>h[i];
  sort(h,h+n);
  dfs(0);
  cout<<ans;
  return 0;
}

这个题在二分里面吧