Pagini recente » Cod sursa (job #1768332) | Cod sursa (job #3276931) | Cod sursa (job #2711237) | Cod sursa (job #855641) | Cod sursa (job #1434874)
#include <cstdio>
#include <algorithm>
using namespace std;
struct LOTO {
int suma;
char i1,i2,i3;
};
int abc (LOTO x, LOTO y) {
return x.suma<y.suma;
}
LOTO v[1000001];
int p[101];
int main() {
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
int i,j,k,n,s,a=1,x,d,t;
scanf("%d%d",&n,&t);
for(i=1; i<=n; i++)
scanf("%d",&p[i]);
for(i=1; i<=n; i++)
for(j=i; j<=n; j++)
for(k=j; k<=n; k++) {
v[a].suma=p[i]+p[j]+p[k];
v[a].i1=i;
v[a].i2=j;
v[a].i3=k;
a++;
}
sort(v+1,v+a,abc);
for(i=1; i<=a-1; i++) {
x=t-v[i].suma;
s=1;
d=a-1;
while(s<=d) {
if(v[(s+d)>>1].suma==x) {
printf("%d %d %d %d %d %d",p[v[i].i1],p[v[i].i2],p[v[i].i3],p[v[(s+d)/2].i1],p[v[(s+d)/2].i2],p[v[(s+d)/2].i3]);
return 0;
}
if(v[(s+d)>>1].suma<x)
s=(s+d)/2+1;
if(v[(s+d)/2].suma>x)
d=(s+d)/2-1;
}
}
printf("-1");
return 0;
}