Pagini recente » Cod sursa (job #2350429) | Cod sursa (job #83241) | Cod sursa (job #2647971) | Cod sursa (job #1523457) | Cod sursa (job #40834)
Cod sursa(job #40834)
#include<stdio.h>
int a[101],n,i,j,k,st,dr,S,nr;
struct {int i,j,k,s;} s[500000],aux;
int poz(int st,int dr)
{int plusst=0,plusdr=-1;
while(st<dr)
{if(s[st].s>s[dr].s) {aux=s[st];s[st]=s[dr];s[dr]=aux;}
st=st+plusst;
dr=dr+plusdr;}
return st;}
void qsort(int st,int dr)
{int k=poz(st,dr);
if(st>=dr) return ;
qsort(st,k-1);
qsort(k+1,dr);}
int main()
{freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d",&n,&S);
for(;n;n--)
{scanf("%d",&a[++i]);
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
s[++nr].i=i,s[nr].j=j,s[nr].k=k,s[nr].s=a[i]+a[j]+a[k];
}
qsort(1,nr);
for(i=1;i<=n;i++)
{k=S-s[i].s;
st=1;dr=nr;
while(st<=dr)
{j=(st+dr)/2;
if(s[j].s==k)break;
if(s[j].s<k) st=j+1;
else dr=j-1;}
if(j)
{printf("%d %d %d %d %d %d",a[s[i].i],a[s[i].j],a[s[i].k],a[s[j].i],a[s[j].j],a[s[j].k]);
fclose(stdout);
return 0;}}
printf("-1");
fclose(stdout);
return 0;}