Cod sursa(job #2223956)

Utilizator vladm98Munteanu Vlad vladm98 Data 22 iulie 2018 12:52:23
Problema Loto Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("loto.in");
ofstream fout ("loto.out");
int v[101];
unordered_map <int, vector <int>> hashh [1000000];

void insertt (int x, int i, int j, int k) {
    int modulo = x % 1000000;
    if (hashh[modulo].count(x)) return;
    hashh[modulo][x].push_back(i);
    hashh[modulo][x].push_back(j);
    hashh[modulo][x].push_back(k);
}

bool isIn (int x, int i, int j, int k) {
    int modulo = x % 1000000;
    if (hashh[modulo].count(x)) {
        for (auto y : hashh[modulo][x]) {
            fout << v[y] << ' ';
        }
        fout << v[i] << ' ' << v[j] << ' ' << v[k];
        return true;
    }
    return false;
}


int main() {
    int n;
    int s;
    fin >> n >> s;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
    }
    for (int i = 1; i <= n; ++i) {
        for (int j = i; j <= n; ++j) {
            for (int k = j; k <= n; ++k) {
                long long sum = 1LL * v[i] + v[j] + v[k];
                if (sum > s) continue;
                insertt(sum, i, j, k);
                int diff = s - sum;
                if (isIn(diff, i, j, k)) {
                    return 0;
                }
            }
        }
    }
    fout << -1;
    return 0;
}