Pagini recente » Cod sursa (job #297644) | Cod sursa (job #1973605) | Cod sursa (job #310694) | Cod sursa (job #1365492) | Cod sursa (job #965022)
Cod sursa(job #965022)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <unordered_set>
using namespace std;
#define Nmax 128
int a[Nmax];
unordered_set <int> sum;
ifstream f("loto.in");
ofstream g("loto.out");
int N, S;
void citire()
{
f >> N >> S;
for ( int i = 1; i <= N; i++ )
f >> a[i];
f.close();
}
void gen()
{
for ( int i = 1; i <= N; i++ )
for ( int j = i; j <= N; j++ )
for ( int k = j; k <= N; k++ )
{
sum.insert( a[i] + a[j] + a[k] );
}
}
void afis( int s )
{
for ( int i = 1; i <= N; i++ )
for ( int j = i; j <= N; j++ )
for ( int k = j; k <= N; k++ )
if ( a[i] + a[j] + a[k] == s)
g << a[i] << " " << a[j] << " " << a[k] << " ";
}
void rezolva()
{
for ( unordered_set<int>::iterator it = sum.begin(); it != sum.end(); ++it )
{
if ( sum.find( S - *it ) != sum.end() )
{
afis( S - *it );
afis( *it );
return;
}
}
g << "-1";
}
int main()
{
citire();
gen();
rezolva();
return 0;
}