Pagini recente » Cod sursa (job #333492) | paranteze3 | Cod sursa (job #147856) | Cod sursa (job #1895979) | Cod sursa (job #974370)
Cod sursa(job #974370)
#include<algorithm>
#include<cstdio>
#include<set>
using namespace std;
struct BILET
{
int b1,b2,b3,s;
bool operator < (const BILET & other) const
{
return s<other.s;
}
};
BILET make (int a, int b, int c)
{
BILET res={a,b,c,a+b+c};
return res;
}
set < BILET > sum;
set < BILET >::iterator st,dr;
int b[110];
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int n,S,i,j,k;
scanf("%d%d",&n,&S);
for(i=1;i<=n;i++)
scanf("%d",&b[i]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
sum.insert(make(b[i],b[j],b[k]));
st=sum.begin();
dr=sum.end(); advance(dr,-1);
while(st!=sum.end() && dr!=sum.end() && (*st).s<=(*dr).s)
{
while(st!=sum.end() && dr!=sum.end() && (*st).s<=(*dr).s && (*dr).s+(*st).s >=S )
{
if((*st).s + (*dr).s == S)
{
printf("%d %d %d %d %d %d",(*st).b1,(*st).b2,(*st).b3,(*dr).b1,(*dr).b2,(*dr).b3);
return 0;
}
advance(dr,-1);
}
advance(st,1);
}
printf("-1\n");
return 0;
}