Pagini recente » Cod sursa (job #1421925) | Cod sursa (job #2192949) | Cod sursa (job #1777888) | Cod sursa (job #3243008) | Cod sursa (job #821285)
Cod sursa(job #821285)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,S,i,j,k,v[110],sum,w,sol;
struct sp {int a,b,s;};
sp sume[1000010];
int crit(sp x, sp y) {return x.s<y.s;}
int cautbin(int x)
{
int l=1,r=w,m;
while(l<=r)
{
m=(l+r)/2;
if(sume[m].s==x) return m;
if(sume[m].s>x) r=m-1;
if(sume[m].s<x) l=m+1;
}
return -1;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d%d",&n,&S);
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++)
{
sum=v[i]+v[j]+v[k];
w++;
sume[w].a=v[i];
sume[w].b=v[j];
sume[w].s=sum;
}
//sort(sume+1,sume+w+1,crit);
for(i=1;i<=w;i++)
{
sum=S-sume[i].s;
sol=cautbin(sum);
if(sol!=-1)
{
printf("%d ",sume[i].a);
printf("%d ",sume[i].b);
printf("%d ",sume[i].s-sume[i].a-sume[i].b);
printf("%d ",sume[sol].a);
printf("%d ",sume[sol].b);
printf("%d ",sume[sol].s-sume[sol].a-sume[sol].b);
return 0;
}
}
printf("-1\n");
return 0;
}