Pagini recente » Cod sursa (job #1801128) | Cod sursa (job #1511049) | Cod sursa (job #1427252) | Cod sursa (job #1669503) | Cod sursa (job #1679807)
#include <cstdio>
#include<algorithm>
#define MAX 100
using namespace std;
struct aa{
int x, y, z, s;
}; aa sume[MAX*MAX*MAX+2], aux[MAX*MAX*MAX+1];
bool cresc(aa a, aa b)
{
return (a.s<b.s);
}
int v[MAX+1], n;
inline int query(int a)
{
int st, dr, mij;
st=1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(sume[mij].s==a)
return mij;
if(sume[mij].s>a)
dr=mij-1;
else st=mij+1;
}
return -1;
}
int main()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
int i, j, k, sum, m=0, a, poz;
scanf("%d%d", &n, &sum);
for(i=1;i<=n;i++)
scanf("%d", &v[i]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++){
aux[++m].s=v[i]+v[j]+v[k];
aux[m].x=v[i];
aux[m].y=v[j];
aux[m].z=v[k];
}
sort(aux+1, aux+m+1, cresc);
n=0;
for(i=1;i<=m;i++)
if(aux[i].s!=aux[i-1].s)
sume[++n]=aux[i];
for(i=1;i<=n;i++)
{
a=sum-sume[i].s;
poz=query(a);
if(poz!=-1)
{
printf("%d %d %d %d %d %d", sume[i].x, sume[i].y, sume[i].z, sume[poz].x, sume[poz].y, sume[poz].z);
return 0;
}
}
printf("-1");
return 0;
}