fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. public class Main {
  6. public static void main(String[] args){
  7. int[] arr = {-5, -5, 1, 1, 1, 1, 1, 1,
  8. 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 67, 67, 99};
  9. int lo = getFirst(arr, -5);
  10. if(lo==arr.length){ // the number is not present in the array.
  11. System.out.println(0);
  12. }else{
  13. int hi = getLast(arr, -5);
  14. System.out.println((hi-lo+1));
  15. }
  16. }
  17.  
  18. // Returns last occurence of num or arr.length if it does not exists in arr.
  19. static int getLast(int[] arr, int num){
  20. int lo = 0, hi = arr.length-1, ans = arr.length;
  21. while(lo<=hi){
  22. int mid = (lo+hi)/2;
  23. if(arr[mid]==num){
  24. ans = mid;
  25. lo = mid+1;
  26. }else if(arr[mid]<num){
  27. lo = mid+1;
  28. }else if(arr[mid]>num){
  29. hi = mid-1;
  30. }
  31. }
  32. return ans;
  33. }
  34.  
  35. // Returns first occurence of num or arr.length if it does not exists in arr.
  36. static int getFirst(int[] arr, int num){
  37. int lo = 0, hi = arr.length-1, ans = arr.length;
  38. while(lo<=hi){
  39. int mid = (lo+hi)/2;
  40. if(arr[mid]==num){
  41. ans = mid;
  42. hi = mid-1;
  43. }else if(arr[mid]<num){
  44. lo = mid+1;
  45. }else if(arr[mid]>num){
  46. hi = mid-1;
  47. }
  48. }
  49. return ans;
  50. }
  51. }
Success #stdin #stdout 0.07s 380224KB
stdin
Standard input is empty
stdout
2