Pagini recente » Cod sursa (job #2901004) | Cod sursa (job #1470111) | Cod sursa (job #1766586) | Cod sursa (job #539538) | Cod sursa (job #487609)
Cod sursa(job #487609)
#include <stdio.h>
#include <algorithm>
using namespace std;
struct jumatate{
long a; long b;long c;
long s;
};
int msp(jumatate a, jumatate b){
return a.s < b.s;
};
long n,v[101],s,i,j,k,p=1;
jumatate ju[1000000];
int main()
{
freopen("loto.in","r",stdin);
freopen("loto.out","w",stdout);
scanf("%ld",&n);
scanf("%ld",&s);
for(i=1;i<=n;i++){
scanf("%d",&v[i]);
}
for(i=1;i<=n;i++){
for(j=i;j<=n;j++){
for(k=j;k<=n;k++){
ju[p].s=v[i]+v[j]+v[k];
ju[p].a=v[i];
ju[p].b=v[j];
ju[p].c=v[k];
p++;
}
}
}
sort(ju+1,ju+p,msp);
int min=1,max=p,m;
long long x;
for(i=1;i<=p-1;i++){
min=1;
max=p;
x=s-ju[i].s;
while(min<=max){
if(x==ju[(min+max)/2].s){
printf("%d %d %d %d %d %d",ju[i].a,ju[i].b,ju[i].c,ju[(min+max)/2].a,ju[(min+max)/2].b,ju[(min+max)/2].c);
return 0;
}else{
if (x<ju[(min+max)/2].s){
max=(min+max)/2-1;
}else{
min=( min+max)/2+1;
}
}
}
}
printf("-1");
return 0;
}