Pagini recente » Cod sursa (job #3247098) | Cod sursa (job #1653144) | Cod sursa (job #1633881) | Cod sursa (job #2176879) | Cod sursa (job #2445252)
#include <iostream>
#include <cmath>
#include <algorithm>
#include <fstream>
#define nmax 1000001
#define rep(a,b,c) for(a = b; a <= c; ++a)
using namespace std;
ifstream fin("loto.in");
ofstream fout("loto.out");
struct tip{
int sum, a, b, c;
};
bool comp(tip x,tip y)
{
return x.sum < y.sum;
}
tip s[nmax];
int v[101];
int main()
{
int i, j, k, st, dr, mijl, n, suma, lg = 0, x;
fin >> n >> suma;
rep(i,1,n)
fin >>v[i];
rep(i,1,n)
rep(j,i,n)
rep(k,j,n)
{
s[++lg].sum = v[i] + v[j] + v[k];
s[lg].a = v[i];
s[lg].b = v[j];
s[lg].c = v[k];
}
sort(s + 1, s + lg + 1, comp);
rep(i,1,lg)
{
x = suma - s[i].sum;
st = 1;
dr = lg;
while(st <= dr)
{
mijl = (st + dr) / 2;
if(s[mijl].sum == x)
{
fout <<s[mijl].a<<" "<<s[mijl].b<<" "<<s[mijl].c<<" "<<s[i].a<<" "<<s[i].b<<" "<<s[i].c;
return 0;
}
if(s[mijl].sum > x)
dr = mijl - 1;
else
st = mijl + 1;
}
}
fout << -1;
return 0;
}