【ybt】【字串 處理 課過 例5】生日相同
阿新 • • 發佈:2021-01-23
生日相同
題目連結:生日相同
題目描述
解題思路
多關鍵字快排即可。
code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int n,ok;
struct abc{
string name;
int m,d;
}a[100010];
bool cmp(abc a,abc b)
{
if(a.m!=b.m)
return a.m<b.m;
if(a.d!=b.d)
return a.d<b.d;
if(a.name.size()!=b.name.size())
return a.name.size()<b.name.size();
return a.name<b.name;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].name>>a[i].m>>a[i].d;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n; i++)
{
int j=i,s=0;
while(a[j].m==a[i].m&&a[j].d==a[i].d)
j++,s++;
j--,s--;
if(s>1)
{
ok=1;
cout<<a[i].m<<" "<<a[i].d<<" ";
for(int k=i;k<=j;k++)
cout<<a[k].name<<" ";
cout<<endl;
}
i= j;
}
if(!ok)
printf("None");
}