Cod sursa(job #320057)

Utilizator madlexeicar md madlex Data 3 iunie 2009 13:02:53
Problema Loto Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;

long N,S;
long vec[100];

// --------------------------------------
int main();
int _tmain(int argc, char* argv[])
{
	return main();
}


int main()
{
	ifstream in("loto.in");
	ofstream out("loto.out");

	long i;
	long maxim;
	long * end;
	long * v1,*v2,*v3,*v4,*v5,*v6;
	long sum1,sum2,sum3,sum4,sum5;

	in >> N >> S;
	for(i = 0; i < N ;i++)
	{
		in >> vec[i];
		if( i == 0 ) maxim = vec[0];
		else if( maxim < vec[i] ) maxim = vec[i];
	}

	if( maxim * 6 == S )
	{
		out 
			<< maxim << " "
			<< maxim << " "
			<< maxim << " "
			<< maxim << " "
			<< maxim << " "
			<< maxim;
		return 0;
	}else
	if( maxim * 6 < S )
	{
		out << -1;
		return -1;
	}

	end = &vec[N];
	for(v1 = &vec[0]; v1 != end ; v1 ++)
	{
		sum5 =
		sum4 = 
		sum3 =
		sum2 =
		sum1 = *v1;

		if( sum1 > S )continue;

		for(v2 = v1; v2 != end; v2++)
		{
			sum2 = sum1 + *v2;
			if( sum2 > S )continue;

			for(v3 = v2; v3 != end; v3++)
			{
				sum3 = sum2 + *v3;
				if( sum3 > S )continue;

				for(v4 = v3; v4 != end; v4++)
				{
					sum4 = sum3 + *v4;
					if( sum4 > S )continue;

					for(v5 = v4; v5 != end; v5++)
					{
						sum5 = sum4 + *v5;
						if( sum5 > S )continue;

						for(v6 = v5; v6 != end; v6++)
						{
							if( (sum5 + *v6) == S )
							{
								out << *v1 << " "
									<< *v2 << " "
									<< *v3 << " "
									<< *v4 << " "
									<< *v5 << " "
									<< *v6;

								return 0;
							}
						}
					}
				}
			}
		}
	}
	out << -1;
	return 0;
}