考试排名(sort) 比赛题目 题目统计 全部提交 时间限制:C/C++ 1000MS,其他语言 2000MS 内存限制:C/C++ 256MB,其他语言 512MB 分数:100 描述
众所周知,考试成绩出来之后,都需要根据分数进行一下排名。 现在给你 条考试成绩数据,每条数据包含三项信息,学号、课程编号、分数。(保证学号、课程编号、分数都为整数。保证数据内不会出现同一个人在一门课程内有两条成绩的情况,数据不存在前导零) (本题内排名的计算规则为,分数越高,排名数字越小,及排名 1 1为最高分,如果存在同分排名并列,并且并列后,后一名直接接上,如有两个人并列第二,那么后一名从第三开始 而不是第四)。 请你编写一个程序,实现以下功能。 1.输入 � � � � � 1 query1学号 课程编号,输出成绩。(输出独占一行) 2.输入 � � � � � 2 query2学号 课程编号,输出这个学生这门课考试成绩的排名。(输出独占一行) 3.输入 � � � � � 3 query3课程编号,输出这门课的考试排名信息,从第一名开始升序输出,排名如果并列,先输出学号小的一个,以如下格式输出。 输出多行,每行三项数据 学号 分数 排名。 例如 1200919207 99 1 1200919209 98 2 1200919210 98 2 4.输入 � � � � � 4 query4学号,输出这个学生的各门考试的课程编号、分数、排名。根据课程编号按升序输出。 输出多行,每行三项数据 课程编号 分数 排名。 例如 1 95 2 106 94 3 5.输入 � � � END,输出 � � OK后结束程序。 保证查询时信息合法,不存在空查询或非法查询,及查询的数据存在于考试成绩数据内。
输入描述
第一行一个整数 � N,代表 � N条数据。 接下来 � N行,每行三个整数,学号 课程编号 分数 接下来的直到输入 � � � END,各种功能指令。 保证功能指令需要输出的总行数,小于等于 2 × 1 0 5 + 1 2×10 5 +1,大于等于1 。
输出描述
根据指令输出
用例输入 1
11 1200919207 1 99 1200919208 1 98 1200919210 1 100 1200919204 2 44 1200919206 2 60 1200919208 2 88 1200919207 2 90 1200919210 2 6 1200919204 1 90 1200919206 1 95 1200919260 1 99 query1 1200919207 2 query2 1200919207 1 query2 1200919260 1 query3 1 query3 2 query4 1200919207 query4 1200919210 query4 1200919206 END 用例输出 1
90 2 2 1200919210 100 1 1200919207 99 2 1200919260 99 2 1200919208 98 3 1200919206 95 4 1200919204 90 5 1200919207 90 1 1200919208 88 2 1200919206 60 3 1200919204 44 4 1200919210 6 5 1 99 2 2 90 1 1 100 1 2 6 5 1 95 4 2 60 3 OK 提示
1 ≤ � ≤ 200000 1≤N≤200000 1 ≤ ( 学号 , 课程编号 ) ≤ 1 0 18 1≤(学号,课程编号)≤10 18
0 ≤ ( 分数 ) ≤ 100 0≤(分数)≤100