Cod sursa(job #584414)
/**
* user: caen1
* file: infoarena/loto.c
* date: 24 apr 2011
**/
#include <stdio.h>
#define IN "loto.in"
#define OUT "loto.out"
#define N 101
#define END_MAIN printf("\n"); return 0;
static long v[N];
static void bubblesort(int);
static int cautbin(int, long, long);
int main(void) {
int n, i, rez;
long s;
(void) freopen(IN, "r", stdin);
(void) freopen(OUT, "w", stdout);
(void) scanf("%d %ld", &n, &s);
for(i = 1; i <= n; ++i) (void) scanf("%ld", &v[i]);
bubblesort(n);
if(v[n] * 6 < s) printf("-1");
else if(v[n] * 6 == s) for(i = 0; i < 6; ++i) printf("%ld ", v[n]);
else {
rez = cautbin(1, n, s / 6);
}
END_MAIN
}
void bubblesort(int n) {
int sortat = 0, aux, i;
do {
sortat = 1;
for(i = 1; i < n; ++i) if(v[i] > v[i + 1])
aux = v[i], v[i] = v[i + 1], v[i + 1] = aux, sortat = 0;
} while(!sortat);
}
int cautbin(int lo, long hi, long n) {
long mid;
do {
mid = lo + ((hi - lo) >> 1);
if(v[mid] < n) lo = mid + 1;
else if(v[mid] > n) hi = mid - 1;
} while(lo < hi && v[mid] != n);
return v[mid];
}