Pagini recente » Cod sursa (job #2389758) | Cod sursa (job #2337430) | Cod sursa (job #2900065) | Cod sursa (job #2897339) | Cod sursa (job #874649)
Cod sursa(job #874649)
#include<stdio.h>
#include<algorithm>
using namespace std;
int v[101],N,s,t;
struct sum
{
int x;
int y;
int z;
int s;
} a[1000001];
int comp(sum a, sum b)
{
return a.x+a.y+a.z<b.x+b.y+b.z;
}
int caut(int d)
{
int st=1;
int dr=N*N*N;
while(st<=dr)
{
int mij=(st+dr)/2;
if(a[mij].s>d)
dr=mij-1;
else if(a[mij].s<d)
st=mij+1;
else
return mij;
}
return 0;
}
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]);
for(int i=1;i<=N;++i)
for(int j=1;j<=N;++j)
for(int k=1;k<=N;++k)
{
++t;
a[t].x=v[i];
a[t].y=v[j];
a[t].z=v[k];
a[t].s=a[t].x+a[t].y+a[t].z;
}
sort(a+1,a+t+1,comp);
for(int i=1;i<=t;++i)
{
int ret=caut(s-a[i].s);
if(ret!=0)
{
printf("%d %d %d %d %d %d",a[i].x,a[i].y,a[i].z,a[ret].x,a[ret].y,a[ret].z);
return 0;
}
}
printf("%d",-1);
return 0;
}