class Solution {
public:vector<int> searchRange(int A[], int n, int target) {
int low = binarylow(A,n,target);
vector<int> ans;
ans.push_back(low);
low = binary(A,n,target);
ans.push_back(low);
return ans;
}
int binarylow(int A[],int n,int target){
if(n==0)return -1;
int low = 0,high = n-1;
while(low<high){
int mid = low+((high-low)>>1);
if(A[mid]>=target){
high = mid;
}else {
low = mid+1;
}
}
if(A[high]==target)return high;
else return -1;
}
int binary(int A[],int n,int target){
if(n==0)return -1;
int low = 0,high = n-1;
while(low<high){
int mid = low+((high-low)>>1);
if(A[mid]<=target)low = mid+1;
else high = mid;
}
if(A[low]==target)return low;
if(low>0 && A[low-1]==target)return low-1;
return -1;
}
};