Cod sursa(job #1221057)

Utilizator cojocarugabiReality cojocarugabi Data 19 august 2014 12:43:00
Problema Loto Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
# include <fstream>
# define mod 666013
using namespace std;
ifstream fi("loto.in");
ofstream fo("loto.out");
typedef struct node
{
    long long x,y,z,s;
    node *next;
} *nod;
nod S[mod];
bool find(int s)
{
    long long m=s%mod;
    for (nod p=S[m];p;p=p->next)
        if (p->s==s) return 0;
    return 1;
}
int main(void)
{
    long long n,p;
    fi>>n>>p;
    long long s[n+5];
    for (int i=1;i<=n;++i) fi>>s[i];
    for (int i=1;i<=n;++i)
        for (int j=1;j<=n;++j)
            for (int x=1;x<=n;++x)
                if (find(s[i]+s[j]+s[x]))
                {
                     nod p=new node;
                     p->x=i;p->y=j;p->z=x;p->s=s[i]+s[j]+s[x];
                     long long m=(s[i]+s[j]+s[x])%mod;
                     p->next=S[m];S[m]=p;
                 }
    for (int i=1;i<=n;++i)
        for (int j=1;j<=n;++j)
            for (int x=1;x<=n;++x)
                if (p>=s[i]+s[j]+s[x])
                {
                     int k,m=(k=(p-s[i]-s[j]-s[x]))%mod;
                     for (nod p=S[m];p;p=p->next)
                           if (p->s==k)
                           {
                               fo<<s[i]<<" "<<s[j]<<" "<<s[x]<<" "<<s[p->x]<<" "<<s[p->y]<<" "<<s[p->z]<<"\n";
                               return 0;
                           }
                }
    fo<<"-1\n";
    return 0;
}