手写二分第1点WA
查看原帖
手写二分第1点WA
527243
Iamzzr楼主2021/10/8 13:08
#include <bits/stdc++.h>
using namespace std;
const int Max=10000005;
int n, m, q;
int s[Max];
int main(){
	cin>>n>>m;
	for(int i=1; i<=n; i++)
		scanf("%d", &s[i]);
	for(int i=1; i<=m; i++){
		scanf("%d", &q);
		int l=1, r=n;
		if(s[1]==q){
			cout<<s[1]<<" ";
			continue;
		} 
		while(l+1<r && s[r]>=q){
			int mid = (l+r)/2;
			if(s[mid]>=q) r=mid;
			else l=mid;
		}
		if(s[r]!=q){
			cout<<"-1 ";
			continue;
		}
		cout<<r<<" ";
	}	
	return 0;
} 
2021/10/8 13:08
加载中...