原题:
https://www.luogu.com.cn/problem/P2249
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int a[100111], b[10011];
ll n, m, ans;
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 1; i <= m; i++) {
cin>>b[i];
}
for(int i=1;i<=m;i++){
int fen=n;
int jishu=0;
int j=1;
while(1){
fen/=2;
j++;
if(b[i]>a[jishu+fen]){
jishu+=fen;
}
if(a[fen]==b[i]){
cout<<fen<<" ";
break;
}
if(fen==0){
cout<<-1;
break;
}
}
}
return 0;
}
本人第一次做二分的题,样例秒过,0分,全RE
jishu是二分加的基数,fen是二分,不知道这么写是否规范