1807: 【作】【基础】同时出现的数

内存限制:512 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:6 解决:3

题目描述

Medusa同学拿到了2组数字,老师请你编程帮他找出,第2组数中的哪些数,在第1组数中出现了,从小到大输出所有满足条件的数。
比如:
第1组数有:8 7 9 8 2 6 3
第2组数有:9 6 8 3 3 2 10
那么应该输出:2 3 3 6 8 9

输入

第一行两个整数n和m,分别代表2组数的数量
第二行n个正整数
第三行m个正整数
对于60%的数据1≤n,m≤1000,每个数<=2*10^9
对于100%的数据1≤n,m≤100000,每个数<=2*10^9

输出

按照要求输出满足条件的数,数与数之间用空格隔开

样例输入 复制

7 7
8 7 9 8 2 6 3
9 6 8 3 3 2 10

样例输出 复制

2 3 3 6 8 9

提示

#include <bits/stdc++.h>
using namespace std;
int n,m;
int a[101000],b[101000];
int main() {
	cin>>n>>m;
	for(int i=1; i<=n; i++) cin>>a[i];
	for(int i=1; i<=m; i++) cin>>b[i];
	sort(a+1,a+1+n);
	sort(b+1,b+1+m);
	for(int i=1; i<=m; i++) {
		int pos=lower_bound(a+1,a+n+1,b[i])-a-1;	
		if (a[pos+1]==b[i]) cout<<b[i]<<" "; 
	}
}