Pagini recente » Cod sursa (job #957790) | Cod sursa (job #319591) | Cod sursa (job #1388609) | Cod sursa (job #3255980) | Cod sursa (job #1206841)
#include<cstdio>
#include<stdlib.h>
#include<algorithm>
#define MOD 666013
#define nmax 109
#define MAX 666200
using namespace std;
struct rasp
{
int va;
int n1;
int n2;
int n3;
};
int v[nmax],nr=0;
rasp val[nmax*nmax*nmax];
bool cmp(rasp a,rasp b)
{
if(a.va<b.va)
return true;
return false;
}
bool cauta(int x)
{
int inc=1,sf=nr,med;
while(inc<=sf)
{
med=(inc+sf)/2;
if(val[med].va==x)
{
printf("%d %d %d ",v[val[med].n1],v[val[med].n2],v[val[med].n3]);
return true;
}
if(val[med].va<x)
{
inc=med+1;
}
else
{
sf=med-1;
}
}
return false;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int i,j,k,n,s;
scanf("%d%d",&n,&s);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
{
nr++;
val[nr].va=v[i]+v[j]+v[k];
val[nr].n1=i; val[nr].n2=j; val[nr].n3=k;
}
sort(val+1,val+nr+1,cmp);
i=1;
while(val[i].va<=s/2)
{
if(cauta(s-val[i].va)==true)
{
printf("%d %d %d\n",v[val[i].n1],v[val[i].n2],v[val[i].n3]);
return 0;
}
i++;
}
printf("-1\n");
}