Cod sursa(job #780927)

Utilizator stef1995mmarcu stefan ovidiu stef1995m Data 22 august 2012 21:55:06
Problema Loto Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
const int maxx1=105,maxx2=162000;
int n,s,i,j,k,nr,spart,val,x[maxx1],ans[7],pos[maxx2][3];
vector <int> hash[1000004];
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];
				if(s>spart)
				{
					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;
}