Pagini recente » Cod sursa (job #3161999) | Cod sursa (job #2648326) | Cod sursa (job #1491578) | Borderou de evaluare (job #2016809) | Cod sursa (job #595316)
Cod sursa(job #595316)
#include <stdio.h>
#include <algorithm>
using namespace std;
struct tri
{int suma; int x; int y; int z;};
tri a[1000000];
int cmp (tri m, tri n)
{return m.suma<n.suma;}
int main ()
{
freopen("loto.in", "r", stdin);
freopen("loto.out", "w", stdout);
int n, s, i, j, k, p, v[101];
scanf("%d %d", &n, &s);
for (i=1; i<=n; i++)
scanf("%d", &v[i]);
p=1;
for (i=1; i<=n; i++)
{
for (j=i; j<=n; j++)
{
for (k=j; k<=n; k++)
{
a[p].suma=v[i]+v[j]+v[k];
a[p].x=v[i];
a[p].y=v[j];
a[p].z=v[k];
p++;
}
}
}
sort(a+1, a+p, cmp);
int st, dr, x, t;
for (i=1; i<p; i++)
{
st=1;
dr=p;
x=s-a[i].suma;
while (st<=dr)
{
t=(st+dr)/2;
if (x==a[t].suma)
{
printf ("%d %d %d %d %d %d", a[i].x, a[i].y, a[i].z, a[t].x, a[t].y, a[t].z);
return 0;
}
else
{
if (x<a[t].suma)
dr=t-1;
else
st=t+1;
}
}
}
printf("-1");
return 0;
}