Cod sursa(job #126730)

Utilizator drywaterLazar Vlad drywater Data 22 ianuarie 2008 18:57:28
Problema Ghiozdan Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
FILE *in,*o;
int f,g[100],a,i,n,gmax,nm,p,q,j,w[100];
int main()
{
in=fopen("ghiozdan.in","r");
o=fopen("ghiozdan.out","w");
fscanf(in,"%d %d",&n,&gmax);
for (i=1;i<=n;i++)
 fscanf(in,"%d",&g[i]);
f=1;
while (f==1)
{
f=0;
for (i=1;i<n;i++)
 if (g[i]>g[i+1])
  {
  a=g[i];
  g[i]=g[i+1];
  g[i+1]=a;
  f=1;
  }
}
p=gmax;
for (i=1;i<=n && gmax>0;i++)
 if(g[i]<=gmax)
  {
  gmax=gmax-g[i];
  }
f=1;
while (f==1)
{
f=0;
for (i=1;i<n;i++)
 if (g[i]<g[i+1])
  {
  a=g[i];
  g[i]=g[i+1];
  g[i+1]=a;
  f=1;
  }
}
q=p-gmax;
fprintf(o,"%d",q);
j=1;
do
{
for (i=j;i<=n && q!=0;i++)
 if(g[i]<=q)
  {
  q=q-g[i];
  nm++;
  w[i]=g[i];
  }
j++;
}
while (q!=0);
fprintf(o," %d\n",nm);
for (i=1;i<=n;i++)
if (w[i]!=0)
 fprintf(o,"%d\n",w[i]);
fclose(in);
fclose(o);
return 0;
}