问题标题: 1172 打字游戏(game)酷町堂

3
2
已解决
黄昊轩
黄昊轩
新手守护
新手守护

学校组织了一场打字游戏比赛,该游戏开始后会不断从屏幕的上方掉下标有数字的气球,如果在气球坠入屏幕最下方之前按下气球上对应的数字键,则该气球就会被击破(屏幕上方掉下来有数字的气球最多为500个)。当游戏结束后,屏幕中会显示出该选手击破的气球上的所有数字,这些数字按被击破的先后顺序组成的数字串即为游戏者的比赛得分,得分最高者比赛胜出。作为裁判的小卡卡需要按照选手的比赛得分,按从小到大的顺序给每位选手排列名次。得分最高的选手名字排在第一行,而得分最低的选手名字排在最后一行。 请你帮助小卡卡编程完成。

输入描述 Input Description

共2*N+1行。第一行是一个1到500的整数N,表示总共有N位比赛选手。以下2*N行依次给出每位选手的信息。每位选手的信息都由两行组成。第一行为选手的名字,名字由26个英文字母组成,名字的长度在1~50之间。第二行为一个由一连串的数字所组成的数字串,表示该名选手的得分,该得分的长度在0~500位之间。

输出描述 Output Description

共N行。依次输出按得分从高到低排好序的各位选手的名字,每个名字占据单独的一行。若几个名字的得分相同,则按名字的字典顺序先后排列。

样例输入 Sample Input

 

6
Sedgewick
56541313484613131997132131312121
Parberry
31646431316464313131644979791313
Polya
6794313013464644313131313131
Motwani
13134949746416265468652
Gonzalez
1651644987436132164646499413131
Moret
1613131464613131313519

样例输出 Sample Output

 

Sedgewick
Parberry
Gonzalez
Polya
Motwani
Moret

数据范围及提示 Data Size & Hint

数据范围:
50%的数据得分长度在0~10之间,1<N<10。
80%的数据得分长度在0~100之间,1<N<100。
100%的数据得分长度在0~500之间,1<N<500。


0
已采纳
谢祎恒
谢祎恒
中级守护
中级守护

这题单纯是结构体排序,由于数字太大,所以使用字符串,先排长度,再排大小,都相同就排名字长度,然后按顺序输出就行,伪代码如下

#include<iostream>
#include<algorithm>
//#include<fstream>
using namespace std;
struct sj
{
    string name;
    string score;    
}sj1[502];
bool cmp(sj a,sj b)
{
    比较函数
}

void qsort(int l,int r)

{

    快排

}

(放在一起为结构体排序)
int main()
{
    输入
    调用排序
    输出
    return 0;
}

2
0
0
0
0
我要回答