<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described.
<END_TASK>
<USER_TASK:>
Description:
Longest Subarray with first element greater than or equal to Last element
Search function for searching the first element of the subarray which is greater or equal to the last element ( num ) ; Returns length of the longest array with first element smaller than the last element . ; Search space for the potential first elements . ; It will store the Indexes of the elements of search space in the original array . ; Initially the search space is empty . ; We will add an ith element in the search space if the search space is empty or if the ith element is greater than the last element of the search space . ; we will search for the index first element in the search space and we will use it find the index of it in the original array . ; Update the answer if the length of the subarray is greater than the previously calculated lengths . ; Driver Code

<ASSISTANT_TASK:>
Python Code:
def binarySearch(searchSpace , s , e , num ) : 
	 while(s <= e ) : 
	 mid =(s + e ) // 2 
 if searchSpace[mid ] >= num : 
	 ans = mid 
 e = mid - 1 
  else : 
	 s = mid + 1 
   return ans 
  def longestSubArr(arr , n ) : 
	 searchSpace =[None ] * n 
 index =[None ] * n 
 j = 0 
 ans = 0 
 for i in range(n ) : 
	 if(j == 0 or searchSpace[j - 1 ] < arr[i ] ) : 
	 searchSpace[j ] = arr[i ] 
 index[j ] = i 
 j += 1 
  idx = binarySearch(searchSpace , 0 , j - 1 , arr[i ] ) 
 ans = max(ans , i - index[idx ] + 1 ) 
  return ans 
  if __name__== "__main __": 
	 arr =[- 5 , - 1 , 7 , 5 , 1 , - 2 ] 
 n = len(arr ) 
 print(longestSubArr(arr , n ) ) 
 
<END_TASK>
