Binary Search Leetcode problem ( video 50 )


class Solution {

     public static boolean isPossible(int[] arr , int m , int k , int days)
  {
    int took=0;
    
    for(int i=0;i<arr.length;i++)
    {
      if(arr[i]<=days)
      took++;
      else
      took=0;
      
      if(took==k)
        {
          m--;
          took=0;
        }
      if(m<=0)
        return true;
        
    }
    return false;
  }

   public int minDays(int[] bloomDay, int m, int k) 
    {

        int l=1;
        int r=(int)Math.pow(10,9);

        while(l<=r)
        {
            int mid = l + (r-l)/2;

            if(isPossible(bloomDay,m,k,mid))
            r = mid - 1 ;
            else
            l = mid + 1 ;

        }
        int exe = (int)Math.pow(10,9);
        if(l == exe+1 )
        return -1;
        return l;
    }
}
}