Cod sursa(job #18293)

Utilizator baktakNicoleta Iordachi baktak Data 18 februarie 2007 11:17:40
Problema Ghiozdan Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 0.63 kb
#include<fstream.h>
int g,n,gr[1500],sol[1500],p,max=0,nr,s=0,c[1500];
ifstream f("ghiozdan.in");
ofstream l("ghiozdan.out");
void back(int k)
{int i;
 if(k==p+1)
  {s=0;
  for(int i=1;i<=p&&s<=g;i++)
    s=s+gr[sol[i]];
  if(s<=g&&max<s)
	{max=s;
	nr=p;
	for(i=1;i<=nr;i++)
	    c[i]=gr[sol[i]];}
    }
  else
   {if(k>1) sol[k]=sol[k-1];
      else sol[k]=0;
   while(sol[k]<n-p+k)
      {sol[k]++ ;
      back(k+1);}
   }
  }
void main()
{
f>>n>>g;
for(int i=1;i<=n;i++)
 f>>gr[i];
f.close();
for(i=1;i<=n;i++)
  {p=i;
  back(1);}
l<<max<<" "<<nr<<endl;
for(i=1;i<=nr;i++)
  l<<c[i]<<endl;
l.close();}