Pagini recente » Cod sursa (job #120397) | Cod sursa (job #787774) | Cod sursa (job #2738374) | Cod sursa (job #2519487) | Cod sursa (job #18155)
Cod sursa(job #18155)
#include<stdio.h>
#include<iostream.h>
int n,g,gmax,a[202],sol[202],nmin,gg,sol1[202];
void back(int gg,int nr)
{int i,j;
for(i=1;i<=g-gg;i++) if(a[i]>0)
{a[i]--;nr++;sol1[nr]=i;gg=gg+i;
if(g-gg<g-gmax) {gmax=gg;nmin=nr;for(j=1;j<=nmin;j++) sol[j]=sol1[j];}
else if(g-gg==g-gmax&&nr<nmin) {gmax=gg;nmin=nr;for(j=1;j<=nmin;j++) sol[j]=sol1[j];}
else back(gg,nr);nr--;a[i]++;gg=gg-i;}}
int main()
{FILE *f,*g2;
f=fopen("ghiozdan.in","r");
g2=fopen("ghiozdan.out","w");
fscanf(f,"%d%d",&n,&g);int i;
for(i=1;i<=n;i++) {int x;fscanf(f,"%d",&x);a[x]++;}
for(i=g;i>=1;i--) if(a[i]>0) {a[i]--;sol1[1]=i;gg=i;back(gg,1);a[i]++;}
fprintf(g2,"%d %d\n",gmax,nmin);
for(i=nmin;i>=1;i--) fprintf(g2,"%d\n",sol[i]);
fcloseall();return 0;}