Cod sursa(job #1348119)

Utilizator avaspAva Spataru avasp Data 19 februarie 2015 15:27:51
Problema Zebughil Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#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;
}