Pagini recente » Cod sursa (job #866559) | Cod sursa (job #2959961) | Cod sursa (job #1595237) | Cod sursa (job #1956580) | Cod sursa (job #1348119)
#include<cstdio>
#include<algorithm>
using namespace std;
int vec[21],t,n,g,cate,cam;
struct chestie{int vc,sum;};
chestie v[140001];
void generez(){
cate=0;
int doilan=1<<n;
for(int i=1;i<doilan;i++){
cate++;
v[cate].vc=i;
for(int j=0;j<n;j++)
if(i&(1<<j))
v[cate].sum+=vec[n-j];
}
}
bool cmp(const chestie A,const chestie B){
return A.sum<B.sum;
}
void aleg(){
int alese;
cam=0;
alese=0;
int doilan=(1<<n);
for(int i=cate;i>=1&&alese!=doilan-1;i--){
if(v[i].sum<=g&&(alese&v[i].vc)==0){
alese=(alese|v[i].vc);
cam++;
}
}
}
int main(){
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
for(int t=1;t<=3;t++){
scanf("%d%d",&n,&g);
for(int i=1;i<=n;i++)
scanf("%d",&vec[i]);
for(int i=1;i<=140000;i++)
v[i].sum=0;
generez();
sort(v+1,v+cate+1,cmp);
aleg();
printf("%d\n",cam);
}
return 0;
}