搜尋

獲得需要的資料

二分搜

#include<bits/stdc++.h>
using namespace std;

int main(){
	int m,n,k;
	cin >> m >> n >> k;
	int a[m];
	vector<int>b;
	for(int i=0;i<m;i++){
		int x;
		cin >> x;
		a[i]=k-x;
	}
	for(int i=0;i<n;i++){
		int x;
		cin >> x;
		b.push_back(x);
	}
	sort(b.begin(),b.end());
	//
	int ans=0;
	for(int i=0;i<m;i++){
		int l = 0;
		int r = n-1;
		while(l<=r){
			int mid = (l+r)/2;
			if(b[mid]>a[i]){
				r=mid-1;
			}else if(b[mid]==a[i]){
				ans+=1;
				break;
			}else if(b[mid]<a[i]){
				l=mid+1;
			}
		}
	}
	cout << ans << endl;
}

Last updated

Was this helpful?