Cod sursa(job #291717)

Utilizator infooainfo oa infooa Data 30 martie 2009 11:36:46
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<iostream.h>
#include<stdio.h>
int n,s,sum,i,j,nr[30],st[30],k,aux,ord;
void init()
{
	st[k]=nr[1];
}
int succesor()
{
	if(st[k]<nr[n])
		for(i=1;i<=n;i++)
			if((nr[i]<=st[k])&&(st[k]<nr[i+1])) 
			{
				st[k]=nr[i+1];
				return 1;
			}
	return 0;
}
int solutie()
{
	sum=0;
	for(j=1;j<=6;j++)
		sum=sum+st[j];
	if(sum==s) return 1;
	return 0;
}
void tiparire()
{
	do
	{
		ord=1;
		for(i=1;i<6;i++)
			if(st[i]>st[i+1])
			{
				aux=st[i+1];
				st[i+1]=st[i];
				st[i]=aux;
				ord=0;
			}
	}while(ord==0);
	for(i=1;i<=6;i++)
		cout<<st[i]<<" ";
}
void loto()
{
	int as;
	for(k=1;k<=6;k++)
		init();
	if(solutie()) tiparire();
	k=1;
	as=succesor();
	while(as&&k<=6)
	{
		if(solutie()) tiparire();
		as=succesor();
		if(as==0)
		{
			k++;
			as=succesor();
		}
	}
}
int main()
{
	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);
	cin>>n>>s;
	for(i=1;i<=n;i++)
		cin>>nr[i];
	do
	{
		ord=1;
		for(i=1;i<n;i++)
			if(nr[i]>nr[i+1])
			{
				aux=nr[i+1];
				nr[i+1]=nr[i];
				nr[i]=aux;
				ord=0;
			}
	}while(ord==0);
	loto();
	return 0;
}