//binary search
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int* data;
int size;
int capacity;
} arraylist;
void int_arraylist( arraylist* list, int initial_capacity)
{
list
->data
= (int*)malloc(sizeof(int)*initial_capacity
); list->size= 0;
list->capacity=initial_capacity;
}
void resize_arraylist(arraylist* list)
{
list->capacity *= 2;
list
->data
=(int*)realloc(list
->data
,sizeof(int)*list
->capacity
);
}
void add_arraylist(arraylist* list,int value)
{
if(list->size==list->capacity)
{
resize_arraylist(list);
}
list->data[list->size++]=value;
}
int binary(arraylist* list,int target)
{
int mid;
int low=0;
int high=(list->size)-1;
while(low<=high)
{
mid=(low+high)/2;
if((list->data[mid]) == target)
{
return mid;
}
else if((list->data[mid])>target){
high=mid-1;
}
else if((list->data[mid])<target)
low=mid+1;
else return -1;
}
}
int main()
{
arraylist list;
int a;
int_arraylist(&list,a);
int b;
for(int i=0;i<a;i++){
add_arraylist(&list,b);
}
//add_arraylist(&list,4);
//add_arraylist(&list,3);
//add_arraylist(&list,2);
//add_arraylist(&list,1);
//add_arraylist(&list,6);
int i,x;
i=binary(&list,x);
if(i==-1){
}
}
Ly9iaW5hcnkgc2VhcmNoCgoKI2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CnR5cGVkZWYgc3RydWN0CnsKICAgIGludCogZGF0YTsKICAgIGludCBzaXplOwogICAgaW50IGNhcGFjaXR5OwoKCn0gYXJyYXlsaXN0OwoKdm9pZCBpbnRfYXJyYXlsaXN0KCBhcnJheWxpc3QqIGxpc3QsIGludCBpbml0aWFsX2NhcGFjaXR5KQp7CiAgICBsaXN0LT5kYXRhID0gKGludCopbWFsbG9jKHNpemVvZihpbnQpKmluaXRpYWxfY2FwYWNpdHkpOwogICAgbGlzdC0+c2l6ZT0gMDsKICAgIGxpc3QtPmNhcGFjaXR5PWluaXRpYWxfY2FwYWNpdHk7Cn0Kdm9pZCByZXNpemVfYXJyYXlsaXN0KGFycmF5bGlzdCogbGlzdCkKewogICAgbGlzdC0+Y2FwYWNpdHkgKj0gMjsKICAgIGxpc3QtPmRhdGE9KGludCopcmVhbGxvYyhsaXN0LT5kYXRhLHNpemVvZihpbnQpKmxpc3QtPmNhcGFjaXR5KTsKCn0Kdm9pZCBhZGRfYXJyYXlsaXN0KGFycmF5bGlzdCogbGlzdCxpbnQgdmFsdWUpCnsKICAgIGlmKGxpc3QtPnNpemU9PWxpc3QtPmNhcGFjaXR5KQogICAgewogICAgICAgIHJlc2l6ZV9hcnJheWxpc3QobGlzdCk7CiAgICB9CiAgICBsaXN0LT5kYXRhW2xpc3QtPnNpemUrK109dmFsdWU7Cn0KCgoKCmludCBiaW5hcnkoYXJyYXlsaXN0KiBsaXN0LGludCB0YXJnZXQpCnsKICAgIGludCBtaWQ7CiAgICBpbnQgbG93PTA7CiAgICBpbnQgaGlnaD0obGlzdC0+c2l6ZSktMTsKCiAgIHdoaWxlKGxvdzw9aGlnaCkKICAgIHsKICAgICAgICBtaWQ9KGxvdytoaWdoKS8yOwogICAgICAgIGlmKChsaXN0LT5kYXRhW21pZF0pID09IHRhcmdldCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBtaWQ7CiAgICAgICAgfQogICAgICAgZWxzZSBpZigobGlzdC0+ZGF0YVttaWRdKT50YXJnZXQpewogICAgICAgIGhpZ2g9bWlkLTE7CgoKICAgICAgIH0KICAgICAgIGVsc2UgaWYoKGxpc3QtPmRhdGFbbWlkXSk8dGFyZ2V0KQogICAgICAgIGxvdz1taWQrMTsKICAgICAgIGVsc2UgcmV0dXJuIC0xOwogICAgfQoKfQppbnQgbWFpbigpCnsKYXJyYXlsaXN0IGxpc3Q7CnByaW50ZigiRW50ZXIgc2l6ZSA6ICIpOwppbnQgYTsKc2NhbmYoIiVkIiwmYSk7CmludF9hcnJheWxpc3QoJmxpc3QsYSk7CmludCBiOwpmb3IoaW50IGk9MDtpPGE7aSsrKXsKICAgICBzY2FuZigiJWQiLCZiKTsKICAgIGFkZF9hcnJheWxpc3QoJmxpc3QsYik7Cn0KCi8vYWRkX2FycmF5bGlzdCgmbGlzdCw0KTsKLy9hZGRfYXJyYXlsaXN0KCZsaXN0LDMpOwovL2FkZF9hcnJheWxpc3QoJmxpc3QsMik7Ci8vYWRkX2FycmF5bGlzdCgmbGlzdCwxKTsKLy9hZGRfYXJyYXlsaXN0KCZsaXN0LDYpOwppbnQgaSx4OwpwcmludGYoIlRhcmdldCA6ICIpOwpzY2FuZigiJWQiLCZ4KTsKaT1iaW5hcnkoJmxpc3QseCk7CnByaW50ZigiJWQiLGkpOwppZihpPT0tMSl7CiAgIHByaW50Zigibm90IGZvdW5kIikgOwp9Cn0K