怎么才10分啊!!!!
查看原帖
怎么才10分啊!!!!
742157
ZYK_luogu楼主2023/4/8 16:34

简洁的二分代码,然鹅才得10分。。。

#include<iostream>
using namespace std;
#define maxn 100005
typedef long long LL;

LL n, m;
LL a[maxn], b[maxn];

// 在长度为len的数组a中有没有x这个元素
bool P(LL x, LL a[], LL len) {
	LL L = 0, R = len - 1, mid;
	if(a[L] == x || a[R] == x) return true;
	while(L < R) {
		mid = L + R / 2;
		if(a[mid] == x) return true;
		if(a[mid] <= x)
			L = mid + 1;
		else
			R = mid - 1;
	}
	return false;
}

int main() {
	cin >> n >> m;
	for(LL i = 0; i < n; i ++)
		cin >> a[i];
	for(LL i = 0; i < m; i ++)
		cin >> b[i];
	for(LL i = 0; i < n; i ++)
		if(P(a[i], b, m))
			cout << a[i] << " ";
	return 0;
}

2023/4/8 16:34
加载中...