#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_SUCCES; }