Cod sursa(job #448850)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 4 mai 2010 20:57:57
Problema Loto Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 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;
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 solve()
{
	int i,j,k,suma1,suma2;
	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]);
	gasit=0;
	for (i=1;i<=n && !gasit;++i)
         for (j=i;j<=n && !gasit;++j)
              for (k=j;k<=n && !gasit;++k)
              {
				  suma1=v[i]+v[j]+v[k];
				  suma2=s-suma1;
				  if (vv.find(suma2)!=vv.end())
				  {
					  gasit=1;
				  }
			  }
     
	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();
	
	fclose(stdin);
	fclose(stdout);
	
    return 0;
	
}