Pagini recente » Cod sursa (job #578428) | Cod sursa (job #2880798) | Cod sursa (job #1651579) | Cod sursa (job #1394563) | Cod sursa (job #18892)
Cod sursa(job #18892)
#include<fstream.h>
#define input "ghiozdan.in"
#define output "ghiozdan.out"
#define Nmax 20005
int n,a[Nmax],x,gact=0,sact[Nmax],spr[Nmax];
long g;
void btk(int k,long G,int s)
{
int i,j;
if(G<=g)
{
if(G>gact)
{
gact=G;
x=k;
for(j=1;j<=s;j++)
spr[j]=sact[j];
}
else
if(G==gact&&k<x)
{
x=k;
for(j=1;j<=s;j++)
spr[j]=sact[j];
}
for(i=s;i<=n;i++)
if(sact[i]==0)
{
sact[i]=1;
btk(k+1,G+a[i],i);
sact[i]=0;
}
}
}
int main()
{
int i;
ifstream fin(input);
ofstream fout(output);
fin>>n>>g;
for(i=1;i<=n;i++)
fin>>a[i];
btk(0,0,1);
fout<<gact<<" "<<x<<"\n";
for(i=1;i<=n;i++)
if(spr[i]==1)
fout<<a[i]<<"\n";
return 0;
}