1 条题解

  • 0
    @ 2025-10-10 19:27:29

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,i,p,x;
    int a[1000100];
    int main() {
    	cin>>n;
    	for(int i = 0;i < n;i++){
    		cin>>a[i];
    	}
    	cin>>x;
    	
    	if(a[n-1] < x){
    		cout<<-1;
    		return 0;
    	}
    	
    	//二分在[l,r)之间查找左边界 
    	int l = 0,r = n,mid;
    	while(l < r){
    		mid = l + (r - l) / 2;
    		//还要向左侧看
    		if(x == a[mid]) r = mid;
    		else if(x < a[mid]) r = mid;
    		else if(x > a[mid]) l = mid + 1; 
    	} 
    	
    	cout<<l + 1;
    }
    
    
    • 1

    信息

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