Pagini recente » Cod sursa (job #1463838) | Cod sursa (job #1506535) | Cod sursa (job #1214878) | Cod sursa (job #1523141) | Cod sursa (job #1348092)
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=17;
const int MAXX=150000;
class Tin{
public:
int bits;
int sum;
bool operator<(const Tin&t)const{
return sum<t.sum;
}
Tin(){
}
Tin(int b,int s){
bits=b;
sum=s;
}
};
Tin t[MAXX+1];
int v[N+1];
int n,g;
int st,summ,nrt;
void back(int k){
if(k==n+1){
t[++nrt]=Tin(st,summ);
return;
}
for(int i=0;i<=1;i++){
st=st*2+i;
summ+=i*v[k];
back(k+1);
summ-=i*v[k];
st=(st-i)/2;
}
}
int main(){
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
int tt=3;
while(tt--){
scanf("%d%d",&n,&g);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
for(int i=1;i<=MAXX;i++)
t[i].bits=t[i].sum=0;
nrt=0;
back(1);
sort(t+1,t+nrt+1);
int now=0,res=0;
for(int i=nrt;i>=2;i--)
if(((now&t[i].bits)==0)&&(t[i].sum<=g)){
res++;
now|=t[i].bits;
}
printf("%d\n",res);
}
return 0;
}