Pagini recente » Istoria paginii utilizator/slavicg | Cod sursa (job #1917177) | Cod sursa (job #1682721) | Istoria paginii utilizator/horis21 | Cod sursa (job #179439)
Cod sursa(job #179439)
#include<stdio.h>
#include<algorithm>
using namespace std;
long s,v[101];
int n;
int comp (suma a, suma b)
{ return a.s<b.s; }
struct suma {
long s,x,y,z;
} S[200000],aux;
/*int pozitie (int s, int d)
{
while (s<d)
{
while (s<d && S[s].s<=S[d].s)
s++;
aux=S[s];
S[s]=S[d];
S[d]=aux;
while (s<d&&S[d].s>=S[s].s)
d--;
aux=S[s];
S[s]=S[d];
S[d]=aux;
}
//S[s]=aux;
return s;
}
void quick (int s, int d)
{
int p;
if (s>d)
{
p=pozitie(s,d);
quick(s,p-1);
quick(p+1,d);
}
}*/
int main ()
{
int i,j,k,poz=0,mij,val,a,b,c;
freopen ("loto.in","rt",stdin);
freopen ("loto.out","wt",stdout);
scanf("%d%ld",&n,&s);
for (i=1;i<=n;++i)
scanf("%d",&v[i]);
for (i=1;i<=n;++i)
for (j=i;j<=n;++j)
for (k=j;k<=n;++k)
{
S[++poz].s=v[i]+v[j]+v[k];
S[poz].x=v[i];
S[poz].y=v[j];
S[poz].z=v[k];
}
sort (S+1,S+poz+1,comp);
for (i=1;i<=poz;++i)
{
val=s-S[i].s;
a=i;
b=poz;
while (a<=b)
{
c=(a+b)/2;
if (S[c].s==val)
{
//FILE *f=fopen("loto.out","w");
printf("%ld %ld %ld %ld %ld %ld",S[i].y,S[i].z,S[i].x,S[c].x,S[c].y,S[c].z);
//fclose(f);
return 0;
}
else
if (S[c].s>val)
b=c-1;
else
a=c+1;
}
}
//f=fopen("loto.out","w");
printf("-1");
//fclose(f);
return 0;
}