新生赛第6题
题目描述
小c同学认为跑步非常有趣,于是决定制作一款叫做《天天爱跑步》的游戏。天天爱跑步是一个养成类游戏,需要玩家每天按时上线,完成打卡任务。
游戏一共有n个玩家,每个玩家每天需要跑60圈才能打卡,玩家打卡后游戏会记录每个玩家完成打卡所花费的时间,你能帮小c设计一个程序,将所有玩家按完成打卡时间的长短排序吗?(假设所有玩家每天都能完成打卡)输入
第一行一个整数n(n <= 5000)
接下来n行,每行的格式为:
name h:m:s
其中name代表人名,由小写字母构成,长度不超过10,h,m,s,分别代表时,分,秒,0 < h < 100 , 0 < m < 60 , 0 < s < 60输出
输出n行,每行一个字符串,表示排名为i的玩家的人名
按用时升序排序,若用时相同,则按照输入顺序排序样例输入 Copy
2 homura 1:1:2 madoka 1:1:1样例输出 Copy
madoka homura
#include <iostream>
#include <algorithm>
using namespace std;
struct p
{
string name;
int h;
int m;
int s;
int x;//定义x是用来排相等的话按输入顺序排序
}pe[5100];
bool cmp(p a,p b)//自定义排序
{
if(a.h!=b.h) return a.h<b.h;
if(a.m!=b.m) return a.m<b.m;
if(a.s!=b.s) return a.s<b.s;
return a.x<b.x;//定义x是用来排相等的话按输入顺序排序
}
int main()
{
int n;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> pe[i].name;
scanf("%d:%d:%d",&pe[i].h,&pe[i].m,&pe[i].s);
pe[i].x=i;
}
sort(pe,pe+n,cmp);
for(int i=0;i<n;i++) cout << pe[i].name<<endl;
}
纯纯的照抄题解

2394

被折叠的 条评论
为什么被折叠?



