#include #include #include #include #include #include #include #define SIZE 1000 int search(const unsigned char * t,int start,int end) { pid_t p; int i, status, moitie = ceil((start + end) / 2); p = fork(); switch(p){ case -1: exit(1); case 0: for (i = 0; i < moitie; i++){ if (t[i] == 0) exit(1); } exit(0); default: for (i = moitie; i <= end; i++){ if (t[i] == 0) return 1; } wait(&status); return WEXITSTATUS(status); } } int main(int argc , char * argv[]) { int i; unsigned char arr[SIZE]; srandom(time(NULL)); for (i = 0; i < SIZE; i++) arr[i] = (unsigned char) (random() % 255) + 1; printf("Enter a number between 0 and %d: ", SIZE); scanf(" %d", &i); if (i >= 0 && i < SIZE) arr[i] = 0; if (search(arr,0,SIZE-1)) printf("Found !\n"); else printf("Not found !\n"); return EXIT_SUCCESS; }