Cod sursa(job #642604)

Utilizator d.andreiDiaconeasa Andrei d.andrei Data 1 decembrie 2011 19:53:57
Problema Loto Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <cstdio>
#include <algorithm>
#include <set>

using namespace std;

#define file_in "loto.in"
#define file_out "loto.out"

int n,s,a[10],nr,v[161],gasit,suma1,suma2;
set<int> vv;

void citire()
{
	int i;
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &n, &s);
	for (i=1;i<=n;++i)
		 scanf("%d", &v[i]);
}

void find()
{
	int i,j,k;
	gasit=0;
	for (i=1;i<=n;++i)
         for (j=i;j<=n;++j)
              for (k=j;k<=n;++k)
              {
				  suma1=v[i]+v[j]+v[k];
				  suma2=s-suma1;
				  if (vv.find(suma2)!=vv.end())
				  {
					  gasit=1;
					  return ;
				  }
			  }
}

void solve()
{
	int i,j,k;
	for (i=1;i<=n;++i)
		 for (j=i;j<=n;++j)
			  for (k=j;k<=n;++k)
				   vv.insert(v[i]+v[j]+v[k]);
	find();     
	if (gasit==0)
	{
		printf("-1\n");
	}
	else
	{
		for (i=1;i<=n;++i)
			 for (j=i;j<=n;++j)
				  for (k=j;k<=n;++k)
					   if (v[i]+v[j]+v[k]==suma1)
					   {
						   a[++nr]=v[i];
						   a[++nr]=v[j];
						   a[++nr]=v[k];
					   }
		for (i=1;i<=n;++i)
			 for (j=i;j<=n;++j)
				  for (k=j;k<=n;++k)
					   if (v[i]+v[j]+v[k]==suma2)
					   {
						   a[++nr]=v[i];
						   a[++nr]=v[j];
						   a[++nr]=v[k];
					   }		
		for (i=1;i<=6;++i) printf("%d ", a[i]);
	}
}

int main()
{
	citire();
	solve();
	
    return 0;
	
}