Cod sursa(job #600327)

Utilizator luckyme91wiz kid luckyme91 Data 1 iulie 2011 12:59:01
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> num, Sol;
int s;
int bin (int end, int x)
{
	int i;
	for (i = end; i >= 0; i--)
		if (num[i] <= x)
			return i;
	return -1;
}
		

int solve (vector <int> sol,int sum, int end,int  ix)
{
	if (sol[5] != 0 && sum == 0)
	{
		Sol = sol;
		return 1;
	}
	if (ix <= 5)
	{
		int x = bin (end, sum), i;
		for (i = x; i >= 0; i--)
			if (sum - num[i] >= 0)
			{	
				sol[ix] = num[i];
				if (solve (sol, sum - num[i], x, ix + 1))
					return 1;
			}
	}
	return 0;

}
	


int main() {

ifstream in ("loto.in");
ofstream out ("loto.out");

int n, x, i;

in >> n >> s;
vector <int> sol(6, 0);

for (; n > 0; n--)
{
	in >> x;
	num.push_back(x);
}
sort (num.begin(), num.begin() + num.size() - 1);
solve (sol, s, num.size() - 1, 0);
if (Sol.size() == 6)
	for (i = 5; i >= 0; i--)
		out << Sol[i] << " ";
else
	out << -1;
return 0;
}