Cod sursa(job #780834)

Utilizator stef1995mmarcu stefan ovidiu stef1995m Data 22 august 2012 01:42:19
Problema Loto Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
const int maxx1=105,maxx2=162000;
int n,s,x[maxx1],ans[7],pos[maxx2][3],i,j,k,nr,spart,val;
vector <int> hash[1000003];
int main()
{
	freopen("loto.in","r",stdin);
	freopen("loto.out","w",stdout);
	scanf("%d %d\n",&n,&s);
	for(i=1;i<=n;i++)
		scanf("%d",&x[i]);
	for(i=1;i<=n;i++)
		for(j=i;j<=n;j++)
			for(k=j;k<=n;k++)
			{
				pos[++nr][0]=x[i];
				pos[nr][1]=x[j];
				pos[nr][2]=x[k];
				hash[(x[i]+x[j]+x[k])%1000003].push_back(nr);
			}
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			for(k=1;k<=n;k++)
			{
				spart=x[i]+x[j]+x[k];
				val=(s-spart)%1000003;
				if(hash[val].size())
					if(pos[hash[val][0]][0]+pos[hash[val][0]][1]+pos[hash[val][0]][2]==s-spart)
					{
						ans[1]=x[i];
						ans[2]=x[j];
						ans[3]=x[k];
						ans[4]=pos[hash[val][0]][0];
						ans[5]=pos[hash[val][0]][1];
						ans[6]=pos[hash[val][0]][2];
					}
			}
	sort(ans+1,ans+7);
	if(ans[1]==0)
		printf("-1\n");
	else
	{
		for(i=1;i<=6;i++)
			printf("%d ",ans[i]);
		printf("\n");
	}
	return 0;
}