【字符串】Ybt_生日相同

题目大意

给出一堆人的生日,要你求生日相同的人。


求生日的哈希值,排序。


代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct asdf{
    
    
	string name;
	int month, day;
} a[100005];
int n;

bool cmp(asdf aa, asdf bb){
    
    
	if(aa.month < bb.month || (aa.month == bb.month && aa.day < bb.day)) return 1;
	if(aa.month == bb.month && aa.day == bb.day && aa.name.size() < bb.name.size()) return 1;
	if(aa.month == bb.month && aa.day == bb.day && aa.name.size() == bb.name.size() && aa.name < bb.name) return 1;
	return 0;
}
int main(){
    
    
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i){
    
    
		cin>>a[i].name;
		scanf("%d%d", &a[i].month, &a[i].day);
	}
	sort(a+1, a+1+n, cmp);
	for(int i = 1; i <= n; ++i){
    
    
//		cout<<"### "<<a[i].month<<","<<a[i].day<<"--"<<a[i].name<<endl;
		if(a[i].month == a[i-1].month && a[i].day == a[i-1].day){
    
    
			if(a[i].month != a[i-2].month || a[i].day != a[i-2].day)
				cout<<a[i].month<<" "<<a[i].day<<" "<<a[i-1].name;
			cout<<" "<<a[i].name;
		}
		else if(a[i-1].month == a[i-2].month && a[i-1].day == a[i-2].day) printf("\n");
	}
} 

猜你喜欢

转载自blog.csdn.net/qq_42937087/article/details/114415517