Pagini recente » Cod sursa (job #2035436) | Cod sursa (job #2112713) | Cod sursa (job #1698400) | Cod sursa (job #652749) | Cod sursa (job #2273824)
#include<fstream>
using namespace std;
fstream fin,fout;
int n,gmax, best[75005],prec[75005],g[202],i,j,pmax,x,xmax,k,l;
int infinit=30000;
int main(){
fin.open("ghiozdan.in",ios::in);
fout.open("ghiozdan.out",ios::out);
fin>>n>>gmax;
for(i=1;i<=n;i++){
fin>>x; xmax=max(xmax,x);
g[x]++;
}
for(i=1;i<=gmax;i++){
best[i]=infinit;
}
best[0]=0; pmax=0;
for(i=xmax;i>=1;i--){
for(j=1;j<=g[i];j++){
for(k=gmax;k>=i;k--){
if(best[k-i]+1<best[k]){
best[k]=best[k-i]+1;
prec[k]=k-i;
}
}
}
}
for(i=gmax;i>=0;i--){
if(best[i]<infinit){
pmax=i;
break;
}
}
fout<<pmax<<" "<<best[pmax]<<"\n";
for(i=pmax;i!=0;i=prec[i]){
fout<<i-prec[i]<<"\n";
}
fout.close();
fin.close();
return 0;
}