1 条题解

  • 0
    @ 2026-2-2 19:57:08

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    int a[100001];
    int n,z;
    
    int s1(int left,int right,int x)
    {
    	if(left>right)
    	{
    		if(left>n or a[left]!=x)
    			return -1;
    		else
    			return left;	
    	}
    	int mid=(left+right)/2;
    	if(a[mid]>x)
    		return s1(left,mid-1,x);
    	else if(a[mid]<x)
    		return s1(mid+1,right,x);
    	else
    		return s1(left,mid-1,x);	
    		
    	//1 2 2 4 5    2
    }
    
    
    
    
    
    
    int s(int left,int right,int x)
    {
    	if(left>right)
    	{
    		if(right<0 or a[right]!=x)
    			return -1;
    		else
    			return right;
    	}	
    	int mid=(left+right)/2;
    	if(a[mid]>x)
    		return s(left,mid-1,x);   
    	else if(a[mid]<x)
    		return s(mid+1,right,x);
    	else
    		return s(mid+1,right,x);          	
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    int main()
    {
    int k;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
    	cin>>a[i];
    
    for(int i=1;i<=k;i++){
    	int j;
    	cin>>j;
    	cout<<s1(1,n,j)<<" ";
    	cout<<s(1,n,j)<<" ";
    	cout<<endl;
    }
    
    	
    	
    }
    
    • 1

    信息

    ID
    2050
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    3
    已通过
    1
    上传者