Cod sursa(job #584414)

Utilizator caen1c a e n caen1 Data 25 aprilie 2011 14:37:01
Problema Loto Scor 5
Compilator c Status done
Runda Arhiva de probleme Marime 1.14 kb
/**
 * 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];
}