Cod sursa(job #51756)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 16 aprilie 2007 19:30:02
Problema Loto Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<stdio.h>
int n,i,i1,i2,i3,i4,i5,i6;
long int x[101],s,aux;
int heapdown(int ic,int nc);
int main()
{
	FILE *f,*g;
	f=fopen("loto.in","r");
	g=fopen("loto.out","w");
	fscanf(f,"%d",&n);
	fscanf(f,"%ld",&s);
	for(i=1;i<=n;i++)
	fscanf(f,"%ld",&x[i]);
	for(i=n/2;i>=1;i--)
	heapdown(i,n);
	for(i=n;i>=1;i--)
	{  aux=x[i];x[i]=x[1];x[1]=aux;
	   heapdown(1,i-1);
	}
	for(i1=1;(i1<=n)&&(6*x[i1]<=s);i1++)
	 for(i2=i1;(i2<=n)&&(x[i1]+5*x[i1]<=s);i2++)
	  for(i3=i2;(i3<=n)&&(x[i1]+x[i2]+4*x[i3]<=s);i3++)
	   for(i4=i3;(i4<=n)&&(x[i1]+x[i2]+x[i3]+3*x[i4]<=s);i4++)
	    for(i5=i4;i5<=n;i5++)
	     for(i6=i5;i6<=n;i6++)
	      if(x[i1]+x[i2]+x[i3]+x[i4]+x[i5]+x[i6]==s)
	       { fprintf(g,"%ld %ld %ld %ld %ld %ld\n",x[i1],x[i2],x[i3],x[i4],x[i5],x[i6]);
		 fcloseall();
		 return 0;
	       }
	fprintf(g,"-1\n");
	fcloseall();
	return 0;
}
int heapdown(int ic,int nc)
{
        int is;
	if(2*ic>nc)return 0;
	is=2*ic;
	if(2*ic<nc&&x[2*ic+1]>x[2*ic])is=2*ic+1;
	if(x[is]>x[ic]){aux=x[is],x[is]=x[ic];x[ic]=aux;heapdown(is,nc);}
	return 0;
}