Pagini recente » Cod sursa (job #728514) | Cod sursa (job #476622) | Cod sursa (job #2244703) | Cod sursa (job #1786820) | Cod sursa (job #427652)
Cod sursa(job #427652)
#include <fstream>
using namespace std;
int g[1<<17],v[1<<15];
int main()
{
int n,w,i,j=0,x;
ifstream in("ghiozdan.in");
ofstream out("ghiozdan.out");
in>>n>>w;
for (i=1;i<=w;i++)
g[i]=-1;
for (i=1;i<=n;i++)
{
in>>x;
if (x<=w)
v[++j]=x;
}
n=j;
for (i=1;i<=n;i++)
for (j=w-v[i];j>=0;j--)
if (g[j]!=-1 && g[v[i]+j]==-1 || g[v[i]+j]>g[j] )
g[v[i]+j]=g[j]+1;
for (i=w;i>=1;i--)
if (g[i]!=-1)
{
out<<i<<" "<<g[i]<<"\n";
w=i;
x=g[i];
break;
}
for (i=n;i>=1;i--)
if (w>=v[i] && g[w-v[i]]==g[w]-1)
{
out<<v[i]<<"\n";
w-=v[i];
}
return 0;
}