Cod sursa(job #295396)

Utilizator tudgal1001Profir Tudor tudgal1001 Data 3 aprilie 2009 11:26:54
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<fstream.h>
#include<math.h>
#include<values.h>
ifstream f("loto.in");
ofstream g("loto.out");
int st[7],i,n,ok,x,k; long nr[101],s,s1,cont=0;
void init(int k)
{
	st[k]=0;
}
int succesor(int k)
{
	if (st[k]<n)
	{
		st[k]++;
		return 1;
	}
	return 0;
}
int valid(int k)
{
	ok=0;
	for (i=1; i<=x; i++)
		if (st[k]==nr[i]) ok=1;
	if (ok==0) return 0;
     /*	s1=0;
	for (i=1; i<k; i++)
		s1+=st[i];
	if (s1>s) return 0;   */
        return 1;
}
int solutie (int k)
{
	if (k==6)
	{
		s1=0;
		for (i=1; i<=6; i++)
			s1+=st[i];
		if (s1==s) return 1;
		return 0;
	}
	return 0;
}
void tipar(int k)
{
	for (i=1; i<=k; i++)
		if (i<k) g<<st[i]<<" ";  else g<<st[i];
}
void back(int k)
{
	init(k);
	while (succesor(k) && cont==0)
	{
		if (valid(k))
			if (solutie(k))
			{
				tipar(k);
				cont=1;
			}
		else if (k<=6) back(k+1);
	}
}
int main ()
{
	f>>x>>s;  n=0;
	for (i=1; i<=x; i++)
        {
		f>>nr[i];
		if (nr[i]>n) n=nr[i];
        }
	back(1);
	if (cont==0) g<<"-1";
	return 0;
}