提示
注意:数组空间为 1000000和 查询次数为100000。
tips:使用 scanf
和 printf
会更快哦(scanf
和 printf
比cin和cout快)可以去查相关资料
二分思想(和上篇用到的思想一致)
#include <bits/stdc++.h>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=300005;
int a[N];
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++)
scanf("%d",&a[i]);//cin >>a[i];
int t;
cin>>t;
while(t--) {
int key;
cin>>key;
int l=0,r=n-1;
int f=0;//记录数组下标
while(l<=r) {
int mid=(l+r)/2;
if(key==a[mid]) {
f=mid+1;//找到目标解
break;
} else if(key<a[mid]) {
l=mid+1;
} else
r=mid-1;
}
printf("%d\n",f);//cout<<f<<endl;
}
return 0;
}