Pagini recente » Cod sursa (job #1724778) | Cod sursa (job #2821498) | Cod sursa (job #89900) | Cod sursa (job #1526974) | Cod sursa (job #444902)
Cod sursa(job #444902)
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,s,a[101],v[1000002];
void citire()
{
freopen("loto.in","r",stdin);
scanf("%d%d",&n,&s);
int i,j,k;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
v[0]=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
v[++v[0]]=a[i]+a[j]+a[k];
}
int main()
{
int dr,st,m,i,ss;
citire();
sort(v+1,v+1+v[0]);
freopen("loto.out","w",stdout);
for(i=1;i<=v[0]&&v[i]<=s;i++)
{
ss=s-v[i];
st=1;dr=v[0];
while(st<dr)
{
m=(st+dr)/2;
if(v[m]==ss)
{
int j,k,l,ok1=0,ok2=0;
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
for(l=1;l<=n;l++)
{
if(a[l]+a[k]+a[j]==v[i]&&!ok1)
{printf("%d %d %d ",a[j],a[k],a[l]);ok1=1;}
if(a[l]+a[k]+a[j]==ss&&!ok2)
{printf("%d %d %d ",a[j],a[k],a[l]);ok2=1;}
if(ok1&&ok2)
return 0;
}
}
if(v[m]<ss)
st=m+1;
else
dr=m;
}
}
printf("-1\n");
}