https://cdn.luogu.com.cn/upload/image_hosting/nfosxscr.png
题目在上
代码如下~
#include <bits/stdc++.h>
int a[1000010], ans = -1;
using namespace std;
int main() {
int n, x;
cin >> n;
for(int i = 1; i <= n; i++)
cin >> a[i];
cin >> x;
int l = 1, r = n, ans = -1;
while (l <= r) {
int mid = (l+r)/2; // 中间位置
if (mid == a[mid]) { // 如果中间的数字等于要找的
ans = mid; // 记录答案位置
l =mid; // 局限在右区间
} else if (mid > a[mid]) // 如果中间的数字大于要找的
r = mid; // 局限在左区间
else // 如果中间的数字小于要找的
l = mid; // 局限在右区间
}
cout << ans; // 输出答案
}