Cod sursa(job #284435)

Utilizator razvan_3dragomir razvan razvan_3 Data 21 martie 2009 18:24:11
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<fstream.h>
ifstream intrare("loto.in");
ofstream iesire("loto.out");
long int numere[101];
long int s;int n;
long int b[10000][7];
int count;
void citeste()
{
	intrare>>n>>s;
	for(int i=1;i<=n;i++)
		intrare>>numere[i];
}
void afiseaza(int linia,short int poz)
{
	if(poz>1)
	{
		long int aux=b[linia][0]-b[linia][poz];
		int r=0;
		for(int q=1;q<=count;q++)
			if(b[q][0]==aux){r=q;q=count+1;}
		afiseaza(r,poz-1);
	}
	iesire<<b[linia][poz]<<" ";
}
int main()
{
	citeste();
	int i,j,r;
	for(i=1;i<=n;i++)
	{
		b[i][0]=numere[i];
		b[i][1]=numere[i];
	}

	int min=1;count=n;
	while(min<=n)
	{
		i=1;
		while(i<=count)
		{
			long int aux=b[i][0]+numere[min];
			if(aux<=s)
			{
				r=0;
				for(int q=1;q<=count;q++)
					if(aux==b[q][0]){r=q;q=count+1;}
				if(r==0){count++;b[count][0]=aux;r=count;}
				for(int t=1;t<6;t++)
				{
					if(b[i][t]!=0)
					{
						b[r][t+1]=numere[min];
					}
				}
				if(b[r][0]==s&&b[r][6]!=0)
					{
					min=n+1;i=i+count;r=r-1;
					}
				if(!b[r][1]&&!b[r][2]&&!b[r][3]&&!b[r][4]&&!b[r][5]&&b[r][6]!=s)
				{
					count--;
				}

			}
		i++;
		}
		min++;
	}
	if(b[count][0]!=s)iesire<<"-1";
	else
	{
		afiseaza(count,6);
	}
	return 0;
}