#include <stdio.h>
#define ORIGINAL 0
#define SOLUTION 1
void printb(unsigned x);
int binsearch(int x, int v[], int n);
int main(void){
int i, n;
unsigned int x = 0xFF30;
int v[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for(i = 0; i <= 9; i++)
printf("%d%4d\n", i
, binsearch
(i
, v
, 10));
return 0;
}
#if ORIGINAL
/*Èñõîäíûé âàðèàíò áèíàðíîãî ïîèñêà*/
int binsearch(int x, int v[], int n){
int low, high, mid;
low = 0;
high = n - 1;
while(low <= high){
mid = (low + high) / 2;
if(x < v[mid])
high = mid - 1;
else if(x > v[mid])
low = mid + 1;
else
return mid;
}
return - 1;
}
#endif
#if SOLUTION
/*Ðåøåíèå çàäà÷è 3.1*/
int binsearch(int x, int v[], int n){
int low, high, mid;
low = 0;
high = n - 1;
while(low < high){
mid = (low + high) / 2;
if(x <= v[mid])
high = mid;
else
low = mid + 1;
}
if(v[high] == x && v[low] == x)
return high;
else
return -1;
}
#endif
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE9SSUdJTkFMIDAKI2RlZmluZSBTT0xVVElPTiAxCgp2b2lkIHByaW50Yih1bnNpZ25lZCB4KTsKaW50IGJpbnNlYXJjaChpbnQgeCwgaW50IHZbXSwgaW50IG4pOwoKCmludCBtYWluKHZvaWQpewoJaW50IGksIG47Cgl1bnNpZ25lZCBpbnQgeCA9IDB4RkYzMDsKCWludCB2W10gPSB7MCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOX07CgkKCWZvcihpID0gMDsgaSA8PSA5OyBpKyspCgkJcHJpbnRmKCIlZCU0ZFxuIiwgaSwgYmluc2VhcmNoKGksIHYsIDEwKSk7CgkKIAlyZXR1cm4gMDsKfQoKI2lmIE9SSUdJTkFMCi8qw4jDscO1w67DpMOtw7vDqSDDosOgw7DDqMOgw63DsiDDocOow63DoMOww63DrsOjw64gw6/DrsOow7HDqsOgKi8KaW50IGJpbnNlYXJjaChpbnQgeCwgaW50IHZbXSwgaW50IG4pewoJaW50IGxvdywgaGlnaCwgbWlkOwoJCglsb3cgPSAwOwoJaGlnaCA9IG4gLSAxOwoJd2hpbGUobG93IDw9IGhpZ2gpewoJCW1pZCA9IChsb3cgKyBoaWdoKSAvIDI7CgkJaWYoeCA8IHZbbWlkXSkKCQkJaGlnaCA9IG1pZCAtIDE7CgkJZWxzZSBpZih4ID4gdlttaWRdKQoJCQlsb3cgPSBtaWQgKyAxOwoJCWVsc2UKCQkJcmV0dXJuIG1pZDsKCX0KCXJldHVybiAtIDE7Cn0KI2VuZGlmCgojaWYgU09MVVRJT04KLyrDkMOlw7jDpcOtw6jDpSDDp8Ogw6TDoMO3w6ggMy4xKi8KaW50IGJpbnNlYXJjaChpbnQgeCwgaW50IHZbXSwgaW50IG4pewoJaW50IGxvdywgaGlnaCwgbWlkOwoJCglsb3cgPSAwOwoJaGlnaCA9IG4gLSAxOwoJd2hpbGUobG93IDwgaGlnaCl7CgkJbWlkID0gKGxvdyArIGhpZ2gpIC8gMjsKCQlpZih4IDw9IHZbbWlkXSkKCQkJaGlnaCA9IG1pZDsKCQllbHNlCgkJCWxvdyA9IG1pZCArIDE7Cgl9CglpZih2W2hpZ2hdID09IHggJiYgdltsb3ddID09IHgpCgkJcmV0dXJuIGhpZ2g7CgllbHNlCgkJcmV0dXJuIC0xOwp9CiNlbmRpZg==