Pagini recente » Cod sursa (job #2669059) | Cod sursa (job #407749) | Cod sursa (job #403066) | Cod sursa (job #2227485) | Cod sursa (job #2332330)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
vector < pair < int, int > > vec;
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
int a[25],v[25];
void reset(int n)
{
int i;
for(i=1; i<=n; i++)
a[i]=0;
}
void afis(int n)
{
int i;
for(i=1; i<=n; i++)
cout<<a[i]<<" ";
cout<<endl;
}
int cauta(int n)
{
int i,sum=0;
for(i=1; i<=n; i++)
if(a[i]==1)
sum+=v[i];
return sum;
}
void solve()
{
int p,n,i,g,nr,cnt,x;
cin>>n>>g;
for(i=1; i<=n; i++)
cin>>v[i];
p=1<<n;
a[0]=1;
i=1;
while(i<p)
{
nr=i;
cnt=n;
while(nr!=0)
{
a[cnt]=nr%2;
nr/=2;
cnt--;
}
x=cauta(n);
if(x<=g)
vec.push_back({x,i});
//cout<<x<<" "<<i<<" ";
//afis(n);
reset(n);
i++;
}
sort(vec.begin(),vec.end());
cnt=vec.size()-1;
cnt=vec[cnt].second;
int sol=0;
for(i=vec.size()-1; i>=0; i--)
{
nr=cnt&i;
if(nr==0)
{
cnt=cnt | i;
sol++;
}
}
cout<<sol<<'\n';
while(vec.empty()==false)
vec.pop_back();
}
int main()
{
for(int i=1;i<=3;i++)
solve();
return 0;
}