问题描述
小学毕业后,同学们都进入了不同的初中,小明非常想念小伙伴们,所以他打算联系小学的同学们。 现在他得到了市内某所初中的所有名单,找出其中小明的小伙伴们。
输入
第一行一个整数 n ,表示某初中人数。
接下来 n 行,每行一个字符串,只有小写字母组成,表示该校每个人的拼音。数据保证没有人拼音相同,且已经按照字典序从小到大排序。
第 n+2 行有一个整数 m ,表示小明的小伙伴个数。
最后 m 行,每行一个字符串,只有小写字母组成,表示每个小伙伴的拼音,同样保证没有重复。
输出
输出所有在该校的小伙伴的拼音。
每行一个拼音,顺序按照小伙伴给出的顺序。
样例
输入数据 1
3
alice
bob
zhangsan
2
lisi
zhangsan
输出数据 1
zhangsan
以下是代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int m, n, l, r, sum = 0;
cin >> n;
char a[n][20], b[20];
for(int i = 0; i < n; i++){
cin >> a[i];
}
cin >> m;
for(int i = 0; i < m; i++){
cin >> b;
l = -1;
r = n;
while(l + 1 < r){
sum = (l + r) / 2;
if(strcmp(a[sum], b) >= 0){
r = sum;
}else{
l = sum;
}
}
if(! strcmp(a[r], b)){
cout << a[r];
}
}
return 0;
}