#include <stdio.h>
#include <assert.h>
#define MAX 100
void LeSequencia( double S[], int n );
void ImprimeSequencia( double S[], int n );
int BuscaBinaria( double x, int n, double c[] );
int main()
{
double x, conjunto[MAX];
int n;
scanf( "%lf", &x );
scanf( "%d", &n );
assert( n <= MAX );
LeSequencia( conjunto, n );
if ( BuscaBinaria( x, n, conjunto ) )
printf( "%g pertence ao conjunto de %d elementos.\n", x, n );
else
printf( "%g NAO pertence ao conjunto de %d elementos.\n", x, n );
return 0;
}
void LeSequencia( double S[], int n ) {
int i;
for ( i = 0; i < n; i++)
scanf("%lf", &S[i]);
return;
}
void ImprimeSequencia( double S[], int n ) {
int i;
for ( i = 0; i < n; i++)
printf( "%7.3g ", S[i] );
printf( "\n" );
return;
}
int BuscaBinaria( double x, int n, double c[] ) {
int i,f; /* inicio e fim do intervalo de busca [ i, f [ */
int m; /* ponto medio do intervalo */
i = 0; f = n;
while ( f - i >= 2 ) {/*intervalo de busca com >=2 eltos*/
printf( "[%d,%d[\n", i, f );
m = (i + f) / 2;
assert( m != f && m != i );
if ( x < c[m] )
f = m; /* novo intervalo de busca: [ i, m [ */
else
i = m; /* novo intervalo de busca: [ m, f [ */
}
printf( "[%d,%d[\n", i, f );
assert( f-i == 1 );
return (c[i]==x); /* if(c[i]==x)return 1; else return 0 */
}