Advertisement
Guest User

Untitled

a guest
Dec 10th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #include <stdio.h>
  2. int binarysearchlast(int a, int array[], int n)
  3. {
  4. int low, high, middle, key;
  5. key = -1;
  6. low = 0;
  7. high = n - 1;
  8. while (low <= high)
  9. {
  10. middle = (low + high) / 2;
  11. if (a == array[middle]) {
  12. key = middle;
  13. }
  14. if (a < array[middle])
  15. high = middle - 1;
  16. else
  17. low = middle + 1;
  18. }
  19. if (key == -1)
  20. return -1;
  21. else return key + 1;
  22. }
  23. int binarysearchfirst(int a, int array[], int n)
  24. {
  25. int low, high, middle, key;
  26. key = -1;
  27. low = 0;
  28. high = n - 1;
  29. while (low <= high)
  30. {
  31. middle = (low + high) / 2;
  32. if (a == array[middle]) {
  33. key = middle;
  34. }
  35. if (a <= array[middle])
  36. high = middle - 1;
  37. else
  38. low = middle + 1;
  39. }
  40. if (key == -1)
  41. return -1;
  42. else return key + 1;
  43. }
  44. int main()
  45. {
  46. FILE *fin, *fout;
  47. fin = fopen ("binsearch.in","r");
  48. fout = fopen ("binsearch.out","w");
  49. int a, n, i, b;
  50. fscanf(fin,"%d",&n);
  51. int array[n];
  52. for (i = 0; i < n; i++) {
  53. fscanf(fin, "%d", &array[i]);
  54. }
  55. fscanf(fin, "%d", &a);
  56. for ( i = 0; i < a; i++) {
  57. fscanf(fin, "%d", &b);
  58. fprintf(fout,"%d %d\n", binarysearchfirst(b, array, n), binarysearchlast(b, array, n));
  59. }
  60. fclose(fin);
  61. fclose(fout);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement