原本想使用map容器做,想用下find函数,结果忘了题目里要求输出顺序要和输入顺序一样, 不过后来还是补充了一个vector过了
#include<bits/stdc++.h>
using namespace std;
int main(){
int n=0;int m = 0;
while(cin>>n){
map<string,int>cal;
vector<string>can;
for(int i = 0; i< n;i++){
string name;
cin>>name;
can.push_back(name);
cal.insert(make_pair(name,0));
}
cin>>m;
int invalid = 0;
map<string,int>::iterator it ;
for(int i = 0;i<m;i++){
string choice;
cin>>choice;
it = cal.find(choice);
if(it!=cal.end()){
it -> second++;
}
else{
invalid++;
}
}
/*
for(auto it = cal.begin(); it != cal.end(); it++){
cout<<it->first<<" : "<<it->second<<endl;
}
*/
for(int i = 0;i<can.size();i++){
cout<<can[i]<<" : "<<cal[can[i]]<<endl;
}
cout<<"Invalid : "<<invalid<<endl;
cal.clear();
}
return 0;
}