#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <iterator>
#include <string>
using namespace std;
struct student {
string name;
friend bool operator<(student a,student b){
if(a.name.size()<b.name.size()){
return true;
}
if(a.name.size()>b.name.size()){
return false;
}
return a.name<=b.name;//重名
}
student(string n){
name=n;
}
};map<string,set<student>> a;
int main(){
int n;
cin>>n;
bool flag=false;
while(n--){
string s,tmp,name;
cin>>name;
cin>>tmp;
s=tmp+" ";
cin>>tmp;
s+=tmp;
if(a.count(s)){
flag=true;
set<student> *nm=&a.at(s);
nm->insert(student(name));
}else{
set<student> nm;
nm.insert(student(name));
a.insert(pair<string,set<student>>(s,nm));
}
}
if(flag){
map<string,set<student>>::iterator t;
t=a.begin();
for(;t!=a.end();t++){
set<student> nm=t->second;
if(nm.size()>1){//只输出有重生日的
cout<<t->first<<" ";
set<student>::iterator t2;
t2=nm.begin();
while(t2!=nm.end()){
cout<<t2->name;
t2++;
if(t2!=nm.end())cout<<" ";
}
cout<<endl;
}
}
}else{
cout<<"None"<<endl;//没有相同生日的
}
return 0;
}
noi生日相同2.0
最新推荐文章于 2024-04-15 14:09:02 发布