E. 【例题5】生日相同
题目
主要考察字符串排序。
代码
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
string s,s1,s2;
int n;
struct node
{
string name;
int m;
int d;
} a[100001];
bool cmp(node x,node y)//排序
{
if(x.m!=y.m) return x.m<y.m;
if(x.d!=y.d) return x.d<y.d;
if(x.name.size()!=y.name.size()) return x.name.size()<y.name.size();
return x.name<y.name;
}
void in()
{
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i].name>>a[i].m>>a[i].d;
}
}
int main()
{
in();
sort(a+1,a+1+n,cmp);
bool t=0,flag=0;
for(int i=1; i<=n; i++)
{
if(t) cout<<a[i].name<<" ";
if(a[i].m==a[i+1].m&&a[i].d==a[i+1].d)//生日相同
{
if(!t) cout<<endl<<a[i].m<<" "<<a[i].d<<" "<<a[i].name<<" ";
t=1;
flag=1;
}
else t=0;
}
if(!flag) cout<<"None";
}