- 总时间限制:
- 1000ms 内存限制:
- 65536kB
- 描述
-
在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。试找出所有生日相同的学生。
输入 - 第一行为整数n,表示有n个学生,n ≤ 180。此后每行包含一个字符串和两个整数,分别表示学生的名字(名字第一个字母大写,其余小写,不含空格,且长度小于20)和出生月(1 ≤ m ≤ 12)日(1 ≤ d ≤ 31)。名字、月、日之间用一个空格分隔 输出
- 每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的名字,数字、名字之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。 对生日相同的名字,按名字从短到长按序输出,长度相同的按字典序输出。如没有生日相同的学生,输出”None” 样例输入
-
6Avril 3 2Candy 4 5Tim 3 2Sufia 4 5Lagrange 4 5Bill 3 2
样例输出 -
3 2 Tim Bill Avril4 5 Candy Sufia Lagrange string 的STL大法+模拟
1 #include
2 using namespace std; 3 struct node{ 4 string s; 5 int yue,ri; 6 }a[200]; 7 int N; 8 int cmp(const node&w,const node&e){ 9 if(w.yue >a[i].s;28 cin>>a[i].yue>>a[i].ri;29 }30 sort(a+1,a+N+1,cmp);31 a[N+1].yue=100; a[N+1].ri=100;32 for(int i=2;i<=N+1;i++){33 if(a[i].yue==a[i-1].yue&&a[i].ri==a[i-1].ri){34 tot++;35 if(tot==1){36 ans[tot]=a[i-1].s;37 ans[++tot]=a[i].s;38 }39 else{40 ans[tot]=a[i].s;41 }42 }43 else{44 if(tot>=2){45 jud=true;46 cout< <<" "< <<" ";47 for(int i=1;i<=tot;i++){48 cout< <<" ";49 }50 cout<