ALDS1_4_B-BinarySearch.
Description:
You are given a sequence of n integers S and a sequence of different q integers T. Write a program which outputs C, the number of integers in T which are also in the set S.
Input:
In the first line n is given. In the second line, n integers are given. In the third line q is given. Then, in the fourth line, q integers are given.
Output:
Print C in a line.
Constraints:
Elements in S is sorted in ascending order n ≤ 100000 q ≤ 50000 0 ≤ an element in S ≤ 109 0 ≤ an element in T ≤ 109
SampleInput1:
5
1 2 3 4 5
3
3 4 1
SampleOutput1:
3
SampleInput2:
3 1 2 3 1 5
SampleOutput2:
0
题意:输入一个包含n个整数的数列S以及包含q个不重复整数的数列T,输出既包含于T也包含于S的整数的个数C。
s的元素按升序排列
#include<stdio.h>
int a[1000010],n;
int binarysearch(int key)
{
int left=0;
int right=n;
int mid;
while(left<right)
{
mid=(left+right)/2;
if(key==a[mid]) return 1;
else if(key<a[mid]) right=mid;
else left=mid+1;
}
return 0;
}
int main()
{
int i,q,k,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&q);
for(i=0;i<q;i++)
{
scanf("%d",&k);
if(binarysearch(k)) sum++;
}
printf("%d\n",sum);
return 0;
}