Cod sursa(job #1165203)

Utilizator multislashRobert Morosanu multislash Data 2 aprilie 2014 15:55:34
Problema Loto Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int v[110];
vector<int> H[666014];

int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int n, s,ok=0,s1,ok1;
    cin>>n>>s;
    for(int i=1; i<=n; ++i)
        cin>>v[i];
    for(int i=1; i<=n  && ok==0; ++i)
        for(int j=i; j<=n  && ok==0; ++j)
            for(int k=j; k<=n  && ok==0 ;++k)
            {
                s1=v[i]+v[j]+v[k];
                H[s1%666013].push_back(s1);
                int y=(s-s1)%666013;
                for(int l = 0; l < H[y].size() && ok==0; ++l)
                {
                    if(H[(s-s1)%666013][l]==s-s1) ok=1;
                }
            }
    if(ok==0) cout<<-1;
    else
    {
        ok=0;
        ok1=0;
        for(int i=1; i<=n  && (ok==0||ok1==0); ++i)
            for(int j=i; j<=n  && (ok==0||ok1==0); ++j)
                for(int k=j; k<=n  &&(ok==0||ok1==0);++k)
                    if(v[i]+v[j]+v[k]==s1)
                    {
                        ok=1;
                        cout<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                    }
                     else if(v[i]+v[j]+v[k]==s-s1)
                     {
                        ok1=1;
                        cout<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                    }
    }

    return 0;
}