Cod sursa(job #612428)

Utilizator PetcuIoanPetcu Ioan Vlad PetcuIoan Data 7 septembrie 2011 16:39:56
Problema Loto Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<stdio.h>
#include<vector>
using namespace std;
int p,q,r;
struct intz
{
    int val,x,y,z;
};
vector <intz> h[666013];
int a[121];
void addhash(int x,int y,int z)
{
    intz t;
    t.val=x+y+z;
    t.x=x;
    t.y=y;
    t.z=z;
    h[t.val%666013].push_back(t);
}
int checkhash(int x)
{
    int i,y;
    y=x%666013;
    i=h[y].size();
    for(i--;i>=0;i--)
        if(h[y][i].val==x)
        {
            p=h[y][i].x;
            q=h[y][i].y;
            r=h[y][i].z;
            return 1;
        }
    return 0;
}
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int n,s,i,j,k;
    scanf("%d%d",&n,&s);
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
            {
                if(checkhash(s-a[i]-a[j]-a[k]))
                {
                    printf("%d %d %d %d %d %d",a[i],a[j],a[k],p,q,r);
                    return 0;
                }
                addhash(a[i],a[j],a[k]);
            }
    printf("-1");
    return 0;
}