fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4.  
  5. /* Name of the class has to be "Main" only if the class is public. */
  6. class Ideone
  7. {
  8.  
  9. public static int rightCount(int search, int ... arr) {
  10. int left = 0;
  11. int right = arr.length;
  12.  
  13. if (right > 0) { // массив не пустой?
  14. if (search < arr[left]) { // проверить значение слева
  15. right = 0;
  16. } else if (search >= arr[right - 1]) { // проверить значение справа
  17. left = arr.length;
  18. }
  19. }
  20.  
  21. while (left < right) {
  22. int mid = (left + right) / 2;
  23. if (arr[mid] > search) {
  24. right = mid;
  25. } else {
  26. left = mid + 1;
  27. }
  28. }
  29. return arr.length - right;
  30. }
  31.  
  32. public static void main (String[] args) throws java.lang.Exception
  33. {
  34. int[] arr = {15, 17, 21, 33, 33, 33, 59, 66, 77};
  35.  
  36. int[] tests = {10, 30, 33, 60, 77, 80};
  37.  
  38. for (int search : tests) {
  39. System.out.printf("search = %d -> %d%n", search, rightCount(search, arr));
  40. }
  41. System.out.printf("search = %d in empty array %d%n", 100, rightCount(100));
  42. }
  43. }
Success #stdin #stdout 0.1s 50416KB
stdin
Standard input is empty
stdout
search = 10 -> 9
search = 30 -> 6
search = 33 -> 3
search = 60 -> 2
search = 77 -> 0
search = 80 -> 0
search = 100 in empty array 0