不知道为什么第一个点wa了,求大佬帮我看看
查看原帖
不知道为什么第一个点wa了,求大佬帮我看看
420731
baizhiheizi楼主2021/8/2 22:37
#include <iostream>
using namespace std;
const int maxn=1e6+50;
typedef long long ll;
ll n,m,a[maxn]; 

ll erfen(ll l,ll r,ll x){
	while(l<r){
		int mid=(l+r)>>1;
		if(x==a[mid]&&a[mid]!=a[mid-1]){
			//cout<<a[mid-1]<<"   s="<<a[mid]<<endl;
			if(mid<1||mid>n)return -1;
			else return mid;
		}
		if(x<=a[mid]){
			//x小于说明在左边  
			r=mid;			 
		}else l=mid+1;
	}
	return -1;
}

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	while(m--){
		int x;
		cin>>x;
		cout<<erfen(1,n,x)<<" ";
	}
	return 0;
}
2021/8/2 22:37
加载中...