PAT A1025
来源:互联网 发布:网络分流器怎么连接图 编辑:程序博客网 时间:2024/06/02 03:12
Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhejiang University. Each test is supposed to run simultaneously in several places, and the ranklists will be merged immediately after the test. Now it is your job to write a program to correctly merge all the ranklists and generate the final rank.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive number N (<=100), the number of test locations. Then N ranklists follow, each starts with a line containing a positive integer K (<=300), the number of testees, and then K lines containing the registration number (a 13-digit number) and the total score of each testee. All the numbers in a line are separated by a space.
Output Specification:
For each test case, first print in one line the total number of testees. Then print the final ranklist in the following format:
registration_number final_rank location_number local_rank
The locations are numbered from 1 to N. The output must be sorted in nondecreasing order of the final ranks. The testees with the same score must have the same rank, and the output must be sorted in nondecreasing order of their registration numbers.
Sample Input:251234567890001 951234567890005 1001234567890003 951234567890002 771234567890004 8541234567890013 651234567890011 251234567890014 1001234567890012 85Sample Output:
91234567890005 1 1 11234567890014 1 2 11234567890001 3 1 21234567890003 3 1 21234567890004 5 1 41234567890012 5 2 21234567890002 7 1 51234567890013 8 2 31234567890011 9 2 4
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct Student {char id[15]; //准考证号int score; //分数int location_number; //考场号int local_rank; //考场内的排名 } stu[30010];bool cmp(Student a, Student b) {if(a.score != b.score) return a.score > b.score;else return strcmp(a.id, b.id) < 0;}int main() {int n, k, num = 0; //n为考场数量,k为考场人数,num为考生总人数 scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d", &k);for(int j = 0; j < k; j++){scanf("%s %d", stu[num].id, &stu[num].score);stu[num].location_number = i;num++;}sort(stu + num - k, stu + num, cmp); //对考场的考生进行排序,注意sort的用法stu[num - k].local_rank = 1; //此处容易写成 stu[0].local_rank = 1, num - k即为每个考场的第一个学生 for(int j = num - k + 1; j < num; j++){ //此处容易出现的错误同上 if(stu[j].score == stu[j - 1].score) stu[j].local_rank = stu[j - 1].local_rank;else stu[j].local_rank = j + 1 - (num - k); } }printf("%d\n", num);sort(stu, stu + num, cmp);int r = 1; //考生的总体排名for(int i = 0; i < num; i++){if(i > 0 && stu[i].score != stu[i - 1].score) r = i + 1;printf("%s ", stu[i].id);printf("%d %d %d\n", r, stu[i].location_number, stu[i].local_rank);} return 0;}要注意
- PAT A1025
- pat a1025
- PAT-A1025
- PAT A1025
- PAT A1025
- PAT A1025 PAT Ranking
- PAT a1025题解
- A1025. PAT Ranking (25)
- PAT甲级 A1025.PAT RANKING
- 【PAT】A1025. PAT Ranking (25)
- PAT A1025. PAT Ranking (25)
- PAT A1025. PAT Ranking (25)
- PAT-A1025 PAT Ranking(25)
- PAT甲级练习题A1025. PAT Ranking (25)
- PAT:A1025. PAT Ranking (0/25)
- PAT A1025多考场考生排序
- 清澄A1025. 字符串对比
- 刷清橙OJ--A1025.字符串对比
- JavaEE学习之网络编程Socket
- 一、软件测试的基本概念
- python 起步- str 字符串小总结
- 欢迎使用CSDN-markdown编辑器
- shell的实现原理
- PAT A1025
- Linux存储设备的管理与分区
- 关于Android DrawerLayout的侧滑菜单的点击事件
- [JZOJ5457]项链
- java多线程
- Task 14
- vs2015配置opencv3.3
- Linux常用命令
- nginx笔记