Pagini recente » Cod sursa (job #3037764) | Cod sursa (job #2038599) | Cod sursa (job #1743129) | Cod sursa (job #1899136) | Cod sursa (job #487550)
Cod sursa(job #487550)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct numar{
long a, b, c, s;
};
numar sum[1000000];
int cmp (numar x, numar y){
return x.s < y.s ;
}
int main(){
freopen ("loto.in", "r", stdin);
freopen ("loto.out", "w", stdout);
long n, s, v[101], j, k, i, z=0, a, min, max;
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++){
sum[++z].s=v[i]+v[j]+v[k];
sum[z].a=v[i];
sum[z].b=v[j];
sum[z].c=v[k];
}
}
}
sort(sum+1, sum+z+1, cmp);
/*for(i=1; i<=z; i++){
printf("%d %d %d %d\n", sum[i].s, sum[i].a, sum[i].b, sum[i].c);
}
return 0;*/
for(i=1; i<=z; i++){
//printf("%d ", i);
a=s-sum[i].s;
//printf("%d ", a);
min=1;
max=z;
while(min<=max){
if(a==sum[(min+max)/2].s){
printf("%d %d %d %d %d %d ", sum[i].a, sum[i].b, sum[i].c, sum[(min+max)/2].a, sum[(min+max)/2].b, sum[(min+max)/2].c);
return 0;
}
else{
if(a<sum[(min+max)/2].s){
max=(max+min)/2-1;
}
else{
min=(min+max)/2+1;
}
}
}
}
printf("-1");
return 0;
}