1WA,蹲大佬
查看原帖
1WA,蹲大佬
992163
Sharkegg楼主2024/1/3 12:51
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,low,high,ans; 
ll a[(int)1e7+1],b[(int)1e7+1];
bool check(ll mid,ll x){
    return a[mid]<x;
}
int main(){
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	}
	for(int i=1;i<=m;i++){
		scanf("%lld",&b[i]);
	}
	for(int i=1;i<=m;i++){
		if(b[i]<a[1]){printf("-1 ");continue;}
		low=1;
		high=n;
		while(low <= high){ 
			ll mid = (low + high) / 2; 
			if(check(mid,b[i])){   
				 low = mid + 1;  
				 ans = mid;   
			} 
			else high = mid - 1;
		}
							if(a[++ans]==b[i])printf("%lld",ans);
		else printf("-1");
		printf(" ");
	}
}
2024/1/3 12:51
加载中...