Cod sursa(job #1772698)

Utilizator andru47Stefanescu Andru andru47 Data 6 octombrie 2016 22:40:21
Problema Loto Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <bits/stdc++.h>
#define MOD 7919
#define NMAX 100
using namespace std;
int n,a[NMAX],Sum;
vector <int> Hash[MOD+5];
inline void adauga(int sum)
{
    int csum = sum % MOD;
    Hash[csum].push_back(sum);
    return ;
}
inline bool verifica(int sum)
{
    if (sum<=0)return false;
    int csum = sum%MOD;
    for (auto &it : Hash[csum])
        if (it==sum)return true;
    return false;
}
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d %d\n", &n, &Sum);
    for (int i = 1; i<=n; ++i)
        scanf("%d", &a[i]);
    for (int i = 1; i<=n; ++i)
        for (int j = 1; j<=n; ++j)
            for (int k = 1; k<=n; ++k)
            {
                int sum = a[i] + a[j] + a[k];
                adauga(sum);
                if (verifica(Sum-sum)==true)
                {
                    printf("%d %d %d ", a[i], a[j], a[k]);
                    sum = Sum - sum;
                    for (int ii = 1; ii<=n; ++ii)
                        for (int jj = 1; jj<=n; ++jj)
                            for (int kk = 1; kk<=n; ++kk)
                                if (a[ii] + a[jj] + a[kk] == sum)
                                {
                                    printf("%d %d %d\n", a[ii], a[jj], a[kk]);
                                    return 0;
                                }
                }
            }
    printf("-1\n");
    return 0;
}