Pagini recente » Cod sursa (job #510288) | Rating Dinu I (Dinu2005) | Cod sursa (job #1486674) | Cod sursa (job #2837593) | Cod sursa (job #1333068)
#include <stdio.h>
#include <algorithm>
struct str
{
int p1;
int p2;
int p3;
int val;
} a[1000001];
int n;
int comp(str a,str b)
{
return a.val<b.val;
}
int main()
{
int s;
freopen ("loto.in","r",stdin);
freopen ("loto.out","w",stdout);
scanf("%d%d",&n,&s);
int b[101];
int pos=1;
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
{
a[pos].p1=i;
a[pos].p2=j;
a[pos].p3=k;
a[pos].val=b[k]+b[j]+b[i];
//printf("%d ",a[pos].val);
pos++;
}
}
}
bool as=0;
std::sort(a+1,a+pos,comp);
for(int i=1;i<pos;i++)
{
int valor=s-a[i].val;
int beg=1,e=pos-1,mij;
while(beg<=e)
{
mij=(beg+e)/2;
if(a[mij].val==valor)
{
printf("%d %d %d %d %d %d\n",b[a[i].p1],b[a[i].p2],b[a[i].p3],b[a[mij].p1],b[a[mij].p2],b[a[mij].p3]);
as=1;
break;
}
else if(a[mij].val<valor) beg=mij+1;
else if(a[mij].val>valor) e=mij-1;
}
if(as==1) break;
}
//printf("%d\n",as);
if(as==0) printf("-1");
}