fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int arr1[100000];
  6. int arr2[100000];
  7.  
  8.  
  9. int cmpfunc(const void * a, const void * b) {
  10. return (*(int*)a - *(int*)b);
  11. }
  12.  
  13. int Bsearch(int ar[], int len, int target)
  14. {
  15. int first = 0;
  16. int last = len - 1;
  17. int mid;
  18. while (first <= last)
  19. {
  20. mid = (first + last) / 2;
  21. if (target == ar[mid])
  22. {
  23. return mid;
  24. }
  25. else
  26. {
  27. if (target < ar[mid])
  28. last = mid - 1;
  29. else
  30. first = mid + 1;
  31. }
  32. }
  33. return -1;
  34. }
  35.  
  36. int main(void)
  37. {
  38. int n;
  39. scanf("%d", &n);
  40. int i;
  41. for (i = 0; i < n; i++)
  42. scanf("%d", &arr1[i]);
  43. int m;
  44. scanf("%d", &m);
  45. for (i = 0; i < m; i++)
  46. scanf("%d", &arr2[i]);
  47. qsort(arr1, n, sizeof(int), cmpfunc);
  48.  
  49. ////////////////////////////////////////////////////////////
  50. printf("after sort:");
  51. for(i = 0; i < n; i++) printf(" %d", arr1[i]);
  52. printf("\n");
  53. ////////////////////////////////////////////////////////////
  54.  
  55. for (i = 0; i < m; i++)
  56. {
  57. int idx = Bsearch(arr1, n, arr2[i]);
  58. if (idx == -1)
  59. printf("0\n");
  60. else
  61. printf("1\n");
  62. }
  63. return 0;
  64. }
Success #stdin #stdout 0s 4528KB
stdin
2
1111111111 -1111111111
2
1111111111 -1111111111
stdout
after sort: 1111111111 -1111111111
1
0