二分查找(不用递归)

请在一个有序递增数组中(不存在相同元素),以不用递归的二分查找,找出值x的位置,如果x在数组中不存在,请输出-1!
样例输入
10
1 3 5 7 9 11 13 15 17 19
3
样例输出
2


#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
    int n,target;
    cin >> n;
    int a[n];
    for(int i = 0;i < n;i++){
        cin >> a[i];
    }
    cin >> target;
    int lo = 0,hi = n-1,flag = 0;
    while(lo <= hi){
        int mid = lo + (hi - lo) / 2;
        if(a[mid] == target){
            cout << mid + 1 << endl;
            flag = 1;
            break;
        }else if(a[mid] < target){
            lo = mid + 1;
        }else{
            hi = mid - 1;
        }
    }
    if(!flag){
        cout << -1 << endl;
    }
    return 0;
}