#include <stdio.h>
#include <stdlib.h>
char name[105][30];
int year[105];
int month[105];
int day[105];
int index[105];
int cmp(const void*,const void*);
int main()
{
int n;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf(" %s",name[i]);
scanf("%d%d%d",&year[i],&month[i],&day[i]);
}
for(int i=0; i<105; i++)
index[i]=i;
qsort(index,n,sizeof(index[0]),cmp);
for(int i=0; i<n; i++)
printf("%s\n",name[index[i]]);
return 0;
}
int cmp(const void*i1,const void*i2)
{
int v1=*(int *)i1;
int v2=*(int *)i2;
if(year[v1]>year[v2])
return 1;
if(year[v1]<year[v2])
return -1;
if(year[v1]==year[v2])
{
if(month[v1]>month[v2])
return 1;
if(month[v1]<month[v2])
return -1;
if(month[v1]==month[v2])
{
if(day[v1]>=day[v2])
return 1;
else
return -1;
}
}
}
这样一个代码能过所有的测试点,但是我自己随便写的一组数据如:3 liu 1992 4 20 huang 1992 4 20 ye 1992 4 23排序就不符合要求。。。而且我发现在第五个数据点中是能实现后输入的先输出的,这里就不能了,为什么呢?求大佬解惑