Cod sursa(job #2363796)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 3 martie 2019 18:03:48
Problema Loto Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <iostream>
#include <fstream>
#include <unordered_set>

#define NMAX 100

using namespace std;

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

int v[1 + NMAX];
unordered_set <int> sums;
int N, S;

void WriteSum ( int sum ) {
    for ( int i = 1; i <= N; i++ ) {
        for ( int j = i; j <= N; j++ ) {
            for ( int k = j; k <= N; k++ ) {
                if ( v[i] + v[j] + v[k] == sum ) {
                    fout << v[i] << ' ' << v[j] << ' ' << v[k] << ' ';
                    return ;
                }
            }
        }
    }
}

int main() {

    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++ )
                sums.insert ( v[i] + v[j] + v[k] );

    for ( int i = 1; i <= N; i++ ) {
        for ( int j = 1; j <= N; j++ ) {
            for ( int k = 1; k <= N; k++ ) {
                if ( sums.find ( S - v[i] - v[j] - v[k] ) != sums.end() ) {
                    fout << v[i] << ' ' << v[j] << ' ' << v[k] << ' ';
                    WriteSum ( S - v[i] - v[j] - v[k] );
                    return 0;
                }
            }
        }
    }

    fout << -1 << '\n';
    return 0;
}