2 solutions

  • 1
    @ 2026-5-20 17:37:19

    进食后人:

    输出一行,为获得两个奖项的人的编号,按在科技创新奖获奖名单中的先后次序输出

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    int a[100005],b[100005];
    int find(int x){
    	int l=1,r=m;
    	while(l<=r){
    		int mid=l+(r-l)/2;
    		if(b[mid]==x){
    			return mid;
    		}
    		if(b[mid]>x){
    			r=mid-1;
    		}
    		if(b[mid]<x){
    			l=mid+1;
    		}
    	}
    	return -1;
    } 
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    		t[i]=a[i];
    	}
    	for(int i=1;i<=m;i++){
    		cin>>b[i];
    	}
    	sort(b+1,b+m+1);
    	for(int i=1;i<=n;i++){
    		if(find(a[i])!=-1){
    			cout<<a[i]<<" ";
    		}
    	}
    	return 0;
    } 
    
    
    • 1
      @ 2025-5-28 13:29:56

      思路: 二分查找(手打或函数都可以)

      lower&upper 函数使用说明

      手打函数展示

      • 1

      Information

      ID
      563
      Time
      1000ms
      Memory
      125MiB
      Difficulty
      2
      Tags
      # Submissions
      49
      Accepted
      15
      Uploaded By