Pagini recente » Cod sursa (job #1473433) | Cod sursa (job #385719) | Cod sursa (job #2594844) | Cod sursa (job #1994416) | Cod sursa (job #2854805)
#define boostIO ios_base::sync_with_stdio(false); fin.tie(nullptr); fout.tie(nullptr);
#pragma GCC optimize ("Ofast")
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("loto.in");
ofstream fout ("loto.out");
struct triplet{
int sum, a, b, c;
}; vector <triplet> v;
inline bool cmpSum(const triplet& a, const triplet& b){
return a.sum < b.sum;
}
int n, s, arr[200];
int st, md, dr, target;
int main (){
boostIO
fin>>n>>s;
for(int i=1; i<=n; i++)
fin>>arr[i];
for(int i1=1; i1<=n; i1++)
for(int i2=1; i2<=n; i2++)
for(int i3=1; i3<=n; i3++)
v.emplace_back(triplet{arr[i1]+arr[i2]+arr[i3], arr[i1], arr[i2], arr[i3]});
sort(v.begin(), v.end(), cmpSum);
for(int i=0; i < (int)v.size(); i++){
target = s - v[i].sum;
if(target == v[i].sum){
md = i;
fout<<v[i].a<<" "<<v[i].b<<" "<<v[i].c<<" "<<v[md].a<<" "<<v[md].b<<" "<<v[md].c;
return 0;
}
st = 0;
dr = i-1;
while(st <= dr){
md = (dr - st) / 2 + st;
if(v[md].sum == target){
fout<<v[i].a<<" "<<v[i].b<<" "<<v[i].c<<" "<<v[md].a<<" "<<v[md].b<<" "<<v[md].c;
return 0;
}
if(v[md].sum < target)
st = md + 1;
else
dr = md - 1;
}
}
fout<<-1;
return 0;
}