题目大意: 从指挥官手中两份重叠名单中找出y国间谍,已知x国之前派出的双重间谍会被y国送回x国,名单中不会有任何重复的名字,如果两个列表中出现重复的名字,则它们意味着是同一个人,指挥官需要抓住的人是在两份名单中并且不是双重身份的间谍。
AC代码:
#include<bits/stdc++.h>
using namespace std;
vector<string> x,y,z,ans;
int main(void)
{
int a,b,c;
string s;
while(cin>>a>>b>>c){
x.clear(),y.clear(),z.clear(),ans.clear();
for(int i=0;i<a;i++){
cin>>s;
x.push_back(s);
}
for(int i=0;i<b;i++){
cin>>s;
y.push_back(s);
}
for(int i=0;i<c;i++){
cin>>s;
z.push_back(s);
}
for(int i=0;i<b;i++){
if(find(x.begin(),x.end(),y[i])!=x.end()){
if(find(z.begin(),z.end(),y[i])==z.end())
ans.push_back(y[i]);
}
}
if(!ans.size())
cout<<"No enemy spy"<<endl;
else{
for(int i=0;i<ans.size();i++){
if(i!=0)cout<<" ";
cout<<ans[i];
}
cout<<endl;
}
}
return 0;
}