Pagini recente » Monitorul de evaluare | Statistici Ilau Marius Constantin (ilaumarius) | Profil daviddaogaru | Cod sursa (job #974414) | Cod sursa (job #173409)
Cod sursa(job #173409)
#include <cstdio>
#include <algorithm>
#include <vector>
#define IN "loto.in"
#define OUT "loto.out"
#define Nmax 102
using namespace std;
long N,S,a[Nmax];
struct lot
{int a,b,c,s;};
vector <lot> v;
void citire()
{
scanf("%ld %ld",&N,&S);
for(int i=0; i<N; i++)
scanf("%ld",a+i);
}
bool comp(lot a, lot b)
{
return (a.s<b.s);
}
void solve()
{
lot t;
for(int i=0; i<N; i++)
for(int j=0; j<N; j++)
for(int k=0; k<N; k++)
{
t.a = a[i]; t.b = a[j]; t.c = a[k];
t.s = a[i] + a[j] + a[k];
v.push_back(t);
}
sort(v.begin(),v.end(),comp);
int nr = v.size();
for(int i=0; i< nr; i++)
{
if(2*v[i].s > S) continue;
int li = i, lf = nr-1,m;
while(li <= lf)
{
m = (li+lf) >> 1;
if(v[m].s + v[i].s == S)
{
printf("%d %d %d %d %d %d\n",v[i].a,v[i].b,v[i].c,v[m].a,v[m].b,v[m].c);
return ;
}
if(v[m].s + v[i].s > S)
lf = m-1;
if(v[m].s + v[i].s < S)
li = m+1;
}
}
printf("-1\n");
}
int main()
{
freopen(IN,"r",stdin);
freopen(OUT,"w",stdout);
citire();
solve();
return 0;
}