Pagini recente » Cod sursa (job #2125684) | Cod sursa (job #2734973) | Cod sursa (job #2469424) | Cod sursa (job #1648012) | Cod sursa (job #3172875)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
#define int long long
int n,G,mincnt,v[18];
void dfs(int cnt,vector<int> s){
int ssize=s.size();
if(ssize>=mincnt)return;
if(cnt==n){
for(int i=0;i<ssize;i++)if(s[i]+v[n]<=G){
mincnt=min(mincnt,ssize);
return;
}
mincnt=min(mincnt,ssize+1);
}
for(int i=0;i<ssize;i++){
if(s[i]+v[cnt]<=G){
s[i]+=v[cnt];
dfs(cnt+1,s);
s[i]-=v[cnt];
}
}
s.push_back(v[cnt]);
dfs(cnt+1,s);
}
signed main(){
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
for(int t=0;t<3;t++){
cin>>n>>G;
for(int i=1;i<=n;i++)cin>>v[i];
mincnt=20;
dfs(1,{});
cout<<mincnt<<"\n";
}
}