Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int binarysearchlast(int a, int array[], int n)
- {
- int low, high, middle, key;
- key = -1;
- low = 0;
- high = n - 1;
- while (low <= high)
- {
- middle = (low + high) / 2;
- if (a == array[middle]) {
- key = middle;
- }
- if (a < array[middle])
- high = middle - 1;
- else
- low = middle + 1;
- }
- if (key == -1)
- return -1;
- else return key + 1;
- }
- int binarysearchfirst(int a, int array[], int n)
- {
- int low, high, middle, key;
- key = -1;
- low = 0;
- high = n - 1;
- while (low <= high)
- {
- middle = (low + high) / 2;
- if (a == array[middle]) {
- key = middle;
- }
- if (a <= array[middle])
- high = middle - 1;
- else
- low = middle + 1;
- }
- if (key == -1)
- return -1;
- else return key + 1;
- }
- int main()
- {
- FILE *fin, *fout;
- fin = fopen ("binsearch.in","r");
- fout = fopen ("binsearch.out","w");
- int a, n, i, b;
- fscanf(fin,"%d",&n);
- int array[n];
- for (i = 0; i < n; i++) {
- fscanf(fin, "%d", &array[i]);
- }
- fscanf(fin, "%d", &a);
- for ( i = 0; i < a; i++) {
- fscanf(fin, "%d", &b);
- fprintf(fout,"%d %d\n", binarysearchfirst(b, array, n), binarysearchlast(b, array, n));
- }
- fclose(fin);
- fclose(fout);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement