这个题要注意输出格式,物品编号为整数,但输出的时候要4位,不足位前位补0;不然第三个测试点过不了
#include <iostream>
#include <set>
#include <string>
#include <vector>
using namespace std;
struct Node{
string name;
int numSigle;
vector<int> things;
};
int main(){
int N,M,numThing=0,flag,num;
set<int> find;
Node one;
vector<Node> stu;
cin>>N>>M;
for(int i=0;i<M;i++){
cin>>num;
find.insert(num);
}
for(int i=0;i<N;i++){
flag=0;
cin>>one.name>>one.numSigle;
for(int j=0;j<one.numSigle;j++){
cin>>num;
if(find.count(num)!=0){
flag=1;
one.things.push_back(num);
numThing++;
}
}
if(flag==1) stu.push_back(one);
vector<int> ().swap(one.things);
}
for(int i=0;i<stu.size();i++){
cout<<stu[i].name<<":";
for(int j=0;j<stu[i].things.size();j++){
printf(" %04d",stu[i].things[j]);
}
cout<<endl;
}
cout<<stu.size()<<" "<<numThing;
return 0;
}