hdu 2115 I Love This Game 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2115
题目大意:n个人完成同一项比赛,分别给出他们的名字和时间(分:秒),要求格式输出他们的名字和名次。
题目分析:注意时间完全相同时名次一致,按名字的字典序决定先后。
code:
#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
using namespace std;
struct node
{
string name;
int m,s,rate;
}p[15];
bool cmp(node a,node b)
{
if(a.m==b.m)
{
if(a.s==b.s)return a.name<b.name;
else return a.s<=b.s;
}
return a.m<b.m;
}
bool equals(node a,node b)
{
return a.m==b.m&&a.s==b.s;
}
int main()
{
int i,t=1,n;
//freopen("1.txt","r",stdin);
while(cin>>n,n)
{
for(i=0;i<n;i++)
{
cin>>p[i].name;
scanf("%d:%d",&p[i].m,&p[i].s);
}
sort(p,p+n,cmp);
p[0].rate=1;
for(i=1;i<n;i++)
{
if(equals(p[i],p[i-1]))p[i].rate=p[i-1].rate;
else p[i].rate=i+1;
}
if(t!=1)cout<<endl;
cout<<"Case #"<<t++<<endl;
for(i=0;i<n;i++)
{
cout<<p[i].name<<" "<<p[i].rate<<endl;
}
}
return 0;
}
PS:还是挺水的……