1 条题解

  • 0
    @ 2025-10-10 19:47:18

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    
    int a[100100],n,q,k;
    
    int main() {
    //	freopen("test9.in","r",stdin);
    //	freopen("test9.out","w",stdout);
    
    	cin>>n>>q;
        for(int i = 1;i <= n;i++){
        	cin>>a[i]; 
    	}
    	
    	int l,r,mid;
    	for(int i = 1;i <= q;i++){
    		cin>>k;
    		//找左右边界
    		l = 1;r = n;
    		//左边界 
    		while(l <= r){
    			mid = (l+r)>>1;
    			if(k <= a[mid]) r = mid - 1;
    			else l = mid + 1; 
    		} 
    		
    		if(a[l] == k) cout<<l<<" ";
    		else cout<<-1<<" ";
    		
    		l = 1;r = n;
    		//右边界
    		while(l <= r){
    			mid = (l+r)>>1;
    			if(k >= a[mid]) l = mid + 1;
    			else r = mid - 1;
    		} 
    		
    		if(a[r] == k) cout<<r<<endl;
    		else cout<<-1<<endl;
    	}
    	
    	return 0;
    }
    
    
    • 1

    信息

    ID
    996
    时间
    1000ms
    内存
    512MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者