Pagini recente » Cod sursa (job #654469) | Cod sursa (job #1508032) | Cod sursa (job #1557261) | Cod sursa (job #1861314) | Cod sursa (job #2361921)
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std;
const int INF=20000;
int v[75005];///,bacc[75005];
vector <int> ans;
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
int n,g,i,j,x,l=0,gmax,nmin,aux;
scanf("%d%d",&n,&g);
fill(v+1,v+g+1,INF);
///fill(bacc+1,bacc+g+1,INF);
for(i=1;i<=n;++i)
{
scanf("%d",&x);
aux=l;
for(j=l;j>=0;--j)
if(v[j]!=INF&&j+x<=g)
{
v[j+x]=min(v[j+x],v[j]+1);
aux=max(aux,j+x);
}
/*for(j=0;j<=l;++j)
if(v[j+x]==v[j]+1)
bacc[j+x]=j;*/
l=aux;
}
for(i=g;i>=0;--i)
if(v[i]!=INF)
{
gmax=i;
nmin=v[i];
break;
}
printf("%d %d\n",gmax,nmin);
/*x=gmax;
while(x)
{
ans.push_back(x-bacc[x]);
x=bacc[x];
}
vector <int> :: reverse_iterator it;
for(it=ans.rbegin();it!=ans.rend();++it)
printf("%d\n",*it);*/
return 0;
}