AC代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void* a,const void* b){
char* pa=(char*)a;
char* pb=(char*)b;
return strcmp(pa,pb);
}
int main(){
int n,m,cnt=0,date,min_date1=100000000,min_flag1,min_date2=100000000,min_flag2;
scanf("%d%*c",&n);
char schoolfriend[n][19];
for(int i=0;i<n;i++){
gets(schoolfriend[i]);
}
qsort(schoolfriend,n,sizeof(schoolfriend[0]),cmp);
scanf("%d%*c",&m);
char guest[m][19];
for(int i=0;i<m;i++){
gets(guest[i]);
sscanf(guest[i],"%*6s%8d",&date);
char* t=bsearch(guest[i],schoolfriend,n,sizeof(schoolfriend[0]),cmp);
if(t!=NULL){//是校友
cnt++;
if(date<min_date1){//min_date1指代校友里出生日期最小的
min_date1=date;
min_flag1=i;
}
}
else{//不是校友
if(date<min_date2){//min_date2指代不是校友的人里出生日期最小的
min_date2=date;
min_flag2=i;
}
}
}
if(cnt!=0)printf("%d\n%s",cnt,guest[min_flag1]);
else printf("%d\n%s",cnt,guest[min_flag2]);
return 0;
}