#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<map>
#include<string>
using namespace std;
class Person
{
public:
char name[100];
char time[100];
int rank;
};
int comp(const void *a,const void *b)
{
Person *person1,*person2;
person1=(Person*)a;
person2=(Person*)b;
//如果说时间相同的话
if(!strcmp(person1->time,person2->time))
{
return strcmp(person1->name,person2->name);
}
//如果时间不相同,按照时间排序
else
{
return strcmp(person1->time,person2->time);
}
/*
return strcmp(person1->time,person2->time);
*/
}
int main()
{
//freopen("in.txt","r",stdin);
int n;
int casen=0;
while(scanf("%d",&n))
{
if(n==0)
{
return 0;
}
int i=0;
Person person[20];
for(i=0;i<n;i++)
{
scanf("%s %s",person[i].name,person[i].time);
}
qsort(person,n,sizeof(Person),comp);
int rank=1;char time[100];
strcpy(time,person[0].time);
person[0].rank=1;
for(i=1;i<n;i++)
{
//如果说前一个时间跟后一个时间相同
if(!strcmp(person[i].time,time))
{
person[i].rank=person[i-1].rank;
}
//如果说前一个时间跟后一个时间不相同
else
{
rank++;
person[i].rank=i+1;
strcpy(time,person[i].time);
}
}
//输出
if(casen>0)
{
cout<<endl;
}
casen++;
printf("Case #%d\n",casen);
for(i=0;i<n;i++)
{
printf("%s %d\n",person[i].name,person[i].rank);
}
}
return 0;
}
(精)hdoj(双重排序)
最新推荐文章于 2022-08-03 20:13:53 发布