Pagini recente » Cod sursa (job #863893) | Cod sursa (job #2906410) | Cod sursa (job #2778710) | Cod sursa (job #2565975) | Cod sursa (job #923971)
Cod sursa(job #923971)
#include<algorithm>
#include<cstdio>
#include<vector>
using namespace std;
struct ss { int sum,a,b,c; };
vector<ss> sume;
ss aux;
int n,v[105],cnt;
bool cmp (ss aa, ss bb)
{
return aa.sum<bb.sum;
}
void proces ()
{
int i,j,k;
for (i=1; i<=n; i++)
if (v[i]!=-1)
for (j=1; j<=n; j++)
if (v[j]!=-1)
for (k=1; k<=n; k++)
if (v[k]!=-1)
{
aux.sum=v[i]+v[j]+v[k];
aux.a=v[i], aux.b=v[j], aux.c=v[k];
sume.push_back(aux), cnt++;
}
}
int main ()
{
int s,i,st,dr,mij;
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]);
sort(v+1,v+n+1);
for (i=2; i<=n; i++)
if (v[i]==v[i-1])
v[i-1]=-1;
proces();
sort(sume.begin(),sume.end(),cmp);
for (i=0; i<cnt; i++)
{
st=0, dr=cnt-1;
while (st<=dr)
{
mij=(st+dr)/2;
if (sume[mij].sum==s-(sume[i].sum))
{
printf("%d %d %d %d %d %d\n",sume[i].a,sume[i].b,sume[i].c,sume[mij].a,sume[mij].b,sume[mij].c);
return 0;
}
else if (sume[mij].sum<s-(sume[i].sum))
st=mij+1;
else dr=mij-1;
}
}
printf("-1\n");
return 0;
}