fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int main()
  5. {
  6. int n1, n2, n3, k1, k2, i, j;
  7. scanf("%d %d", &n1, &n2);
  8. int tab1[n1];
  9. for(i = 0; i < n1; i++)
  10. scanf("%d", &tab1[i]);
  11. for(i = 0; i < n2; i++)
  12. {
  13. scanf("%d", &n3);
  14. k1 = (n1 - 1) / 2;
  15. k2 = k1;
  16. j = 1;
  17.  
  18. while(1)
  19. {
  20. if(n3 == tab1[k1])
  21. break;
  22. else if(n3 > tab1[k1])
  23. k1 += ceil(k1 / pow(2, j));
  24. else
  25. k1 -= ceil(k1 / pow(2, j));
  26.  
  27. if(k1 == k2)
  28. break;
  29. k2 = k1;
  30. j++;
  31. }
  32.  
  33. if(n3 == tab1[k1])
  34. {
  35. while(n3 == tab1[k1] && k1 > 0) k1--;
  36. if(tab1[0] == n3) printf("0\n");
  37. else printf("%d\n", k1 + 1);
  38. }
  39. else printf("-1\n");
  40. }
  41.  
  42.  
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0s 4196KB
stdin
6 18
0 10 20 30 40 50
-1 0 1 9 10 11 19 20 21 29 30 31 39 40 41 49 50 2000000000
stdout
-1
0
-1
-1
1
-1
-1
2
-1
-1
3
-1
-1
4
-1
-1
5
15