ZZULIOJ-2910

新生赛第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;


}

纯纯的照抄题解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值