排名(CSP-J模拟赛)

【问题描述】

  Coldforces是一个算法竞赛在线评测网站,并且会不定期地举办在线的算法竞赛。Coldforce上优秀的题目质量吸引了来自全球各地的顶尖算法竞赛选手来参加比赛。为了能够更好地激励大家参加比赛,Coldforces推出了一个rating系统------给每名注册的选手记一个分数,也就是rating。rating会在每场Coldforces比赛后根据参加选手的表现以及比赛前的rating进行相应更新。

  zyb作为Coldforces的管理员之一,他的任务是给Coldforces网站增设一个rating排行榜。他现在知道了注册网站的所有选手的账号id(用一个长度不超过15的字符串表示,字符串中仅由a−za−z的小写字母,A−ZA−Z的大写字母,0−90−9的数字和下划线__组成),以及该id所对应的rating,他现在希望将所有选手按照rating从高到低排序。你能帮帮他吗?

【输入格式】

第一行读入一个正整数nn,表示Coldforces网站中注册的选手数目。 接下来nn行,每行包含长度不超过1515的字符串ss表示id和一个数字rr表示rating,字符串与数字之间用一个字符分隔。输入保证字符串中仅由a−za−z的小写字母,A−ZA−Z的大写字母,0−90−9的数字和下划线__组成,且所有选手的id和rating均互不相同

【输出格式】

要求输出nn行,每行包含一名选手的id和rating,输出顺序按照所有选手的rating从高到低排序

【样例1】

input

5
ksun48 3582
maroonrk 3533
tourist 3757
jiangly 3590
Um_nik 3539

output

tourist 3757
jiangly 3590
ksun48 3582
Um_nik 3539
maroonrk 3533

【样例2】

input

6
triple__a 2624
triple__b 2312
triple__c 2390
triple__d 1921
triple__e 2112
triple__f 2407

output

triple__a 2624
triple__f 2407
triple__c 2390
triple__b 2312
triple__e 2112
triple__d 1921

【数据范围】

对于20%的数据,1≤n≤201≤n≤20. 

对于100%的数据,1≤n≤1000,0≤r≤40001≤n≤1000,0≤r≤4000.  

 这道题是一道很简单的结构题目,首先创建一个结构,结构里面的元素有两个,一个是name,名称,另外一个就是分数rating,原来STL库的sort排序原本是不支持结构排序的,但是我们只需要写一个结构排序引用函数,就可以使用sort了。

  经过排序之后,for循环输出即可,看一下数据范围,O(n^2)没有超时。

排名:

#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
struct Coldforces{
	string name;
	int rating;
}c[N];
typedef struct Coldforces Cold;
int cmp(Cold a,Cold b){
	return a.rating>b.rating;
}
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	  cin>>c[i].name>>c[i].rating;
	sort(c,c+n,cmp);
	for(int i=0;i<n;i++)
	  cout<<c[i].name<<" "<<c[i].rating<<endl;
	return 0;
}

  这是普及组模拟的第一题,所以很简单,等会儿我将会讲解第二题。 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙星尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值