全红
查看原帖
全红
573130
Luxingchen1221楼主2022/11/16 17:01

我测试都过了,也打了空格,为什么wa?

#include <bits/stdc++.h>
using namespace std;

int n,m,a[1000005],i,qqq;
int main(){
	cin>>n>>m;
	for(i=1;i<=n;i++){
		cin>>a[i];
	}
	int i,l=1,r=n,ans=0,k;
	int mid=(l+r)/2;
	for(i=1;i<=m;i++){
		qqq=0;
		cin>>k;
		if(n==1){
			if(k==a[1]){
				cout<<1<<" ";
				qqq=1;
			}
		}
		while(l<=r){
			if(k==a[mid]){
				ans=mid;
				qqq=1;
				while(a[mid]!=k){
					if(a[mid-1]==k){
						mid-=1;
						ans=mid;
					}
				}
				cout<<ans<<" ";
				break;
			}
			else if(k>a[mid]){
				l=mid+1;
				mid=(l+r)/2;
			}
			else if(k<a[mid]){
				r=mid-1;
				mid=(l+r)/2;
			}
		}
		if(qqq==0) cout<<-1<<" ";	
	}
	return 0;
}
2022/11/16 17:01
加载中...