Pagini recente » Cod sursa (job #2381801) | Cod sursa (job #3293918) | Cod sursa (job #2768168) | Cod sursa (job #3273526) | Cod sursa (job #804994)
Cod sursa(job #804994)
#include <stdio.h>
#include<algorithm>
using namespace std;
int v[110];
int n;
struct sp
{
int s;
int a,b;
} sume[1000010];
int cs;
int S;
bool cmp(sp a,sp b)
{
return a.s<b.s;
}
int cauta(int s,int f,int x)
{
if(s+1>=f)
return -1;
int mij=(s+f)/2;
if(x==sume[mij].s)
return mij;
if(x>sume[mij].s)
return cauta(mij,f,x);
if(x<sume[mij].s)
return cauta(s,mij,x);
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&S);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
//sort(v+1,v+n+1);
int j,k;
for(int i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
{
sume[++cs].s=v[i]+v[j]+v[k];
sume[cs].a=v[i];
sume[cs].b=v[j];
}
sort(sume+1,sume+cs+1,cmp);
int sm;
for(int i=1;i<=cs;i++)
{
sm=cauta(1,cs,S-sume[i].s);
if(sm!=-1)
{
printf("%d %d %d %d %d %d",sume[i].a, sume[i].b, sume[i].s - sume[i].a - sume[i].b,
sume[sm].a, sume[sm].b, sume[sm].s - sume[sm].a - sume[sm].b);
return 0;
}
}
printf("-1");
return 0;
}