Pagini recente » Cod sursa (job #1603661) | Cod sursa (job #869618) | Cod sursa (job #956971) | Cod sursa (job #2100870) | Cod sursa (job #2273451)
#include<fstream>
using namespace std;
fstream fin,fout;
int n,gmax, a[75005],b[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++){
a[i]=infinit;
}
a[0]=0; pmax=0;
for(i=xmax;i>=1;i--){
for(j=gmax-i;j>=0;j--){
if(a[j]<infinit){
l=j;
for(k=1;k<=g[i] && l+i<=gmax;k++){
if(a[l+i]>a[l]+1){
a[l+i]=a[l]+1; b[l+i]=l;
}
if(l+i>pmax){
pmax=l+i;
}
l=l+i;
}
}
}
}
fout<<pmax<<" "<<a[pmax]<<"\n";
for(i=pmax;i!=0;i=b[i]){
fout<<i-b[i]<<"\n";
}
fout.close();
fin.close();
return 0;
}