Pagini recente » Cod sursa (job #799513) | Cod sursa (job #1930736) | Cod sursa (job #2904283) | Cod sursa (job #2064997) | Cod sursa (job #2789074)
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <tuple>
using namespace std;
#if TEST
#include <fstream>
ifstream cin("test.in");
ofstream cout("test.out");
#else
#include <fstream>
ifstream cin("loto.in");
ofstream cout("loto.out");
#endif
struct triplet
{
int a;
int b;
int c;
};
int main()
{
int n,s;
cin>>n>>s;
vector<int> a(n);
for(int i=0;i<n;i++)
{
cin>>a[i];
}
unordered_map<int,triplet> m;
m.reserve(n*n*n);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
int p = a[i] + a[j] + a[k];
if (p>s)
continue;
m[ p ] = {a[i], a[j], a[k]}; //pentru ca numerele se pot repeta
auto it = m.find(s-p);
if (it!=m.end())
{
triplet v = it->second;
cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<v.a<<" "<<v.b<<" "<<v.c;
return 0;
}
}
}
}
cout<<"-1"; //not found
return 0;
}