Pagini recente » Cod sursa (job #1801881) | Cod sursa (job #2266046) | Cod sursa (job #409801) | Cod sursa (job #542493) | Cod sursa (job #2789061)
#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);
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)
{
m[ p ] = {a[i], a[j], a[k]};
}
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
int diff = s - a[i] - a[j] - a[k];
if (diff>0 && m.count(diff))
{
triplet v = m[diff];
cout<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<v.a<<" "<<v.b<<" "<<v.c;
return 0;
}
}
}
}
cout<<"-1"; //not found
return 0;
}