Pagini recente » Cod sursa (job #894784) | Cod sursa (job #672690) | Cod sursa (job #2717469) | Cod sursa (job #1235079) | Cod sursa (job #1483261)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <bitset>
using namespace std;
fstream fin("ghiozdan.in",ios::in),fout("ghiozdan.out",ios::out);
bitset <20003> pot[9];
int maxim=0,n,g,imax,gmax=-9,x[24];
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int i,a,j,r;
fin>>n>>g;
for(i=1;i<=n;i++)fin>>x[i];
sort(x+1,x+n+1,cmp);
fout<<" \n";
for(i=1;i<=n;i++)
{
a=x[i];
pot[i][a]=1;
if((a>gmax)&&(a<=g))
{
gmax=a;
imax=i;
}
for(j=1;j<=maxim;j++)
{
if(pot[i-1][j]!=0)
{
pot[i][j]=j;
pot[i][j+a]=1;
if(j>gmax&&j<=g)
{
gmax=j;
imax=i;
}
if(j+a>gmax&&j+a<=g)
{
gmax=j+a;
imax=i;
}
}
}
maxim+=a;
}
int s=gmax,nr=0;
while(s>0)
{
nr++;
fout<<x[imax]<<"\n";
s-=x[imax];
imax--;
}
fout.close();
fout.open("ghiozdan.out",ios::out|ios::in);
fout<<gmax<<" "<<nr;
}