Pagini recente » Cod sursa (job #219688) | Cod sursa (job #2835500) | Cod sursa (job #354255) | Cod sursa (job #2286250) | Cod sursa (job #2932175)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
const int NMAX = 105;
int n, s, arr[NMAX];
struct QUATRO{
int f1, f2, f3, f4;
};
vector<QUATRO>sums;
inline int b_search(int target)
{
int st = 1, dr = n;
while(st <= dr)
{
int mid = (st + dr)/2;
if(sums[mid].f1 == target)
return mid;
if(sums[mid].f1 < target)
st = mid + 1;
if(sums[mid].f1 > target)
dr = mid - 1;
}
return 0;
}
inline bool comp(QUATRO x, QUATRO y)
{
return x.f1 < y.f1;
}
inline void solve()
{
sort(arr+1, arr+n+1);
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= n; ++j)
{
for(int k = 1; k <= n; ++k)
{
sums.push_back({arr[i] + arr[j] + arr[k], arr[i], arr[j], arr[k]});
}
}
}
sort(sums.begin(), sums.end(), comp);
for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= n; ++j)
{
for(int k = 1; k <= n; ++k)
{
int c = b_search(s- (arr[i] + arr[j] +arr[k]));
if(c)
{
fout << arr[i] << ' ' << arr[j] << ' ' << arr[k] << ' ' << sums[c].f2 << ' ' << sums[c].f3 << ' ' << sums[c].f4;
return;
}
}
}
}
fout << -1;
}
int main()
{
fin >> n >> s;
for(int i=1;i<=n;++i)
fin >> arr[i];
solve();
}