Cod sursa(job #2093434)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 23 decembrie 2017 17:54:10
Problema Loto Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream fin ("loto.in"); ofstream fout ("loto.out");

const int nmax = 100;
const int mod = 666013;

int v[nmax + 1];
bool ok;
struct str {
    int sum;
    int i, j, k;
};

vector< str > h[mod];

void baga (str x) {
    h[x.sum % mod].push_back( x );
}

void cauta (int a, int b, int c, int r) {
    for (auto i : h[r % mod]) {
        if (i.sum == r) {
            fout << a << " " << b << " " << c << " " << i.i << " " << i.j << " " << i.k << "\n";
            ok = 0;
            return ;
        }
    }
}

int main () {
    int n, s;

    fin >> n >> s;
    for (int i = 1; i <= n; ++ i)
        fin >> v[ i ];

    for (int i = 1; i <= n; ++ i) {
        for (int j = 1; j <= n; ++ j) {
            for (int k = 1; k <= n; ++ k) {
                str shp;
                shp.sum = v[ i ] + v[ j ] + v[ k ];
                shp.i = v[ i ], shp.j = v[ j ], shp.k = v[ k ];

                baga( shp );
            }
        }
    }

    ok = 1;
    for (int i = 1; i <= n && ok; ++ i) {
        for (int j = 1; j <= n && ok; ++ j) {
            for (int k = 1; k <= n && ok; ++ k) {
                int sum = v[ i ] + v[ j ] + v[ k ];
                if (sum <= s) {
                    cauta(v[ i ], v[ j ], v[ k ], s - sum);
                }
            }
        }
    }

    if (ok) {
        fout << "-1\n";
    }

    fin.close();
    fout.close();
    return 0;
}