Cod sursa(job #672519)

Utilizator ionut_ungureanuUngureanu Vladut Ionut ionut_ungureanu Data 2 februarie 2012 14:26:33
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<stdio.h>
#include<vector>
#define FIN "loto.in","r",stdin
#define FOUT "loto.out","w",stdout
#define NMAX 101

using namespace std;

struct loto 
{
	int s,a,b,c;
};

loto x;
vector <loto>v[2011];
vector <loto>::iterator it;
vector <loto>::iterator it2;

int n,S,i,j,k,p,ok,ss;
int a[NMAX];


void read()
{
freopen(FIN);
scanf("%d %d",&n,&S);
for(i=1;i<=n;i++)
	scanf("%d",&a[i]);
}


vector<loto>::iterator search(loto x)
{
	for(it2=v[x.s%p].begin();it2!=v[x.s%p].end();++it2)
		if((*it2).s == x.s%p)return it2;
	return v[x.s%p].end();
}

void insert(loto x)
{
	it2=search(x);
	if(it2==v[x.s%p].end())
		v[x.s%p].push_back(x);
}

void solve()
{
freopen(FOUT);
for(i=1;i<=n;i++)
	for(j=1;j<=n;j++)
		for(k=1;k<=n;k++)
			{
				x.a=a[i];
				x.b=a[j];
				x.c=a[k];
				x.s=x.a+x.b+x.c;
				insert(x);
			}
		
ok=0;
for(i=0;i<p&&!ok;i++)
	for(it=v[i].begin();it!=v[i].end()&&!ok;++it)
		{
			ss=S-(*it).s;
			it2=v[ss%p].begin();
			if(it2!=v[ss%p].end())
				{
					ok=1;
					printf("%d %d %d %d %d %d",(*it).a,(*it).b,(*it).c,(*it2).a,(*it2).b,(*it2).c);
				}
		}
if(!ok)printf("-1");
}



int main()
{
p=2011;
read();
solve();
return 0;
}