Cod sursa(job #381836)

Utilizator annonymusCornescu Andrey annonymus Data 11 ianuarie 2010 19:47:52
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb

#include<fstream>

using namespace std;

#define inFile   "loto.in"
#define outFile "loto.out"

long int st[100], n, a[100], sol;
long long int s;

fstream f(inFile, ios::in), g(outFile, ios::out);

int valid(int k)
{
	if(k > 6)
		return 0;
	
	long long int suma = 0;

	for(int i=1; i <= k; i++)
	{
		suma = suma + st[i];
		
		if(suma > s)
			return 0;
	}

	return 1;
}

int solutie(int k) 
{ 
	if(k != 6)
		return 0;

	long long int suma = 0;

	for(int i=1; i <= k; i++)
		suma = suma + st[i];
	
	return (suma == s); 
}

void tiparire(int k)
{
	for(int i=1; i <= k; i++)
		g << st[i] << " ";

	sol++;
}

void back(int k)
{
	for(int i=n; i >= 1 && sol != 1; i--)
	{
		st[k] = a[i];
		if(valid(k))
			if(solutie(k))
				tiparire(k);
			else
				back(k + 1);
	}
}

int main()
{
	f >> n >> s;

	for(int i=1; i <= n; i++)
		f >> a[i];

	back(1);

	if(sol == 0)
		g << -1;

	f.close();
	g.close();

	return 0;
}