Pagini recente » Cod sursa (job #3164501) | Cod sursa (job #457186) | Cod sursa (job #727360) | Cod sursa (job #2802965) | Cod sursa (job #283126)
Cod sursa(job #283126)
#include<stdio.h>
#include<algorithm>
#define MAXN 101
#define MAXTrip 1100000
using namespace std;
typedef struct comp;
struct comp
{
int term1;
int term2;
int term3;
int suma;
}
;
comp com[MAXTrip];
int v[MAXN],i,j,k,N,S,contor,ind,ok, poz;
int cmp (comp a,comp b)
{
return a.suma < b.suma;
}
int bin(int val)
{
int left=1, right = contor, mij;
while(left<=right)
{
mij=(left+right)/2;
if( val == com[mij].suma) return mij;
else if(val > com[mij].suma) left = mij+1;
else if(val < com[mij].suma) right = mij-1;
}
return 0;
}
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%d %d",&N,&S);
for( i = 1 ; i <= N ; i++)
scanf("%d", &v[i]);
sort(v+1,v+N+1);
for( i = 1 ; i <= N ; i++)
for( j = i ; j <= N; j++)
for( k = j ; k <= N ; k++)
{
com[++contor].suma = v[i]+v[j]+v[k];
com[contor].term1 = v[i];
com[contor].term2 = v[j];
com[contor].term3 = v[k];
}
sort(com+1,com+contor+1, cmp);
for(i = 1; i <= contor; i++)
{
if(S - com[i].suma >0)
{
poz = bin(S-com[i].suma);
if(poz)
{
printf("%d %d %d %d %d %d\n", com[i].term1,com[i].term2,com[i].term3,com[poz].term1,com[poz].term2,com[poz].term3);
return 0;
}
}
}
printf("-1");
return 0;
}