#1失分,求调
查看原帖
#1失分,求调
526356
Zhang_JY楼主2024/6/28 12:18
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct t{
	int data;
	int first;
}a[1000001];
int f(int l,int r,int k){
	if(r==l){
		return -1;
	}
	int mid=(l+r)/2;
//	cout<<"l= "<<l<<' '<<"r= "<<r<<"mid= "<<mid<<'\n'; 
	
	if(k>a[mid].data){//右
//		cout<<1<<' '<<a[mid].data<<endl;
		return f(mid+1,r,k);
	}
	if(k<a[mid].data){//左
//		cout<<2<<' '<<a[mid].data<<endl;
		return f(l,mid,k);
	}
	if(k==a[mid].data){
	//	return a[mid].data;
		return a[mid].first;
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i].data);
		if(a[i].data!=a[i-1].data){
			a[i].first=i;
		}else{
			a[i].first=a[i-1].first;
		}
	}
//	for(int i=1;i<=n;i++){
//		cout<<a[i].first<<' ';
//	}
//	cout<<endl;
//	cout<<f(1,n,-1);
	for(int i=1;i<=m;i++){
		int t=0;
		cin>>t;
		int p=f(1,n,t);
		cout<<p<<' ';
	}
	return 0;
}
2024/6/28 12:18
加载中...