PAT A1025 PAT Ranking(25)
题目描述
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.
输入格式
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.
输出格式
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.
输入样例
2
5
1234567890001 95
1234567890005 100
1234567890003 95
1234567890002 77
1234567890004 85
4
1234567890013 65
1234567890011 25
1234567890014 100
1234567890012 85
输出样例
9
1234567890005 1 1 1
1234567890014 1 2 1
1234567890001 3 1 2
1234567890003 3 1 2
1234567890004 5 1 4
1234567890012 5 2 2
1234567890002 7 1 5
1234567890013 8 2 3
1234567890011 9 2 4
全部AC
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
//p115
using namespace std;
const int maxn = 30010;
struct Student {
char registration_number[20]; //考生id
int score; //考生成绩
int final_rank; //最终排名
int location_number; //考室号
int local_rank; //考室排名
}stu[maxn];
bool cmp(Student A, Student B) {
if(A.score != B.score) return A.score > B.score; //AB成绩不同,按成绩从大到小排序
else if(A.score == B.score) return strcmp(A.registration_number, B.registration_number) < 0; //AB成绩相同,则按照准考证从小到大排序
}
int main(){
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE}
int N; //考室数量
scanf("%d", &N);
int a = 0; //初始化考生存储位置
for(int i = 0; i < N; i++) {
int K; //考室中考生的数量
scanf("%d", &K);
//输入各个考室考生的注册号和成绩
for(int j = 0; j < K; j++) {
stu[a].location_number = i + 1;
scanf("%s %d", stu[a].registration_number, &stu[a].score);
a++;
}
}
//初始化每个教室排名
int lrank[N+1] = {0};
int lrealrank[N+1] = {0};
//memset(lrank, 1, N+1);
//按考生成绩从大到小排序
sort(stu, stu+a, cmp);
int rank = 1; //总排名
for(int i = 0; i < a; i++) {
//printf("registration_number:%s location_number:%d score:%d \n", stu[i].registration_number, stu[i].location_number, stu[i].score);
//总排名
if(i == 0) stu[i].final_rank = rank;
else if(i != 0 && stu[i].score == stu[i-1].score) stu[i].final_rank = stu[i-1].final_rank;
else if(stu[i].score < stu[i-1].score) stu[i].final_rank = ++rank;
rank = i+1; //更新总排名
//教室排名
if(i != 0 && stu[i].score == stu[i-1].score && stu[i].location_number == stu[i-1].location_number) { //在同个教室中分数相同
stu[i].local_rank = stu[i-1].local_rank;
lrealrank[stu[i].location_number]++;
} else {
stu[i].local_rank = lrank[stu[i].location_number]; //在同个教室中分数不相同
lrank[stu[i].location_number]++;
lrealrank[stu[i].location_number]++;
}
lrank[stu[i].location_number] = lrealrank[stu[i].location_number];
}
printf("%d\n", a);
for(int i = 0; i < a; i++) {
printf("%s %d %d %d\n", stu[i].registration_number, stu[i].final_rank, stu[i].location_number, stu[i].local_rank+1);
}
return 0;
}
PAT A1025 PAT Ranking(25)的更多相关文章
- PAT A1025 pat ranking
有n个考场,每个考场都有若干数量个考生,现给出各个考场中考生的准考证号和分数,要求将所有考生的分数从高到低排序,并输出 #include<iostream> #include<str ...
- A1025 PAT Ranking (25)(25 分)
A1025 PAT Ranking (25)(25 分) Programming Ability Test (PAT) is organized by the College of Computer ...
- pat1025. PAT Ranking (25)
1025. PAT Ranking (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Programmi ...
- 1025 PAT Ranking (25分)
1025 PAT Ranking (25分) 1. 题目 2. 思路 设置结构体, 先对每一个local排序,再整合后排序 3. 注意点 整体排序时注意如果分数相同的情况下还要按照编号排序 4. 代码 ...
- PAT甲级:1025 PAT Ranking (25分)
PAT甲级:1025 PAT Ranking (25分) 题干 Programming Ability Test (PAT) is organized by the College of Comput ...
- PAT A1141 PAT Ranking of Institutions (25 分)——排序,结构体初始化
After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...
- [PAT] 1141 PAT Ranking of Institutions(25 分)
After each PAT, the PAT Center will announce the ranking of institutions based on their students' pe ...
- PAT 1085 PAT单位排行(25)(映射、集合训练)
1085 PAT单位排行(25 分) 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整数 N(≤105),即考生人数.随 ...
- PTA PAT排名汇总(25 分)
PAT排名汇总(25 分) 计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科 ...
随机推荐
- 第72节:Java中的数组
https://www.jianshu.com/p/9ad176caa5bc
- shell 读取文本并访问mysql/redis
#!/bin/bash File="redeemcode.csv" #File=$ database="d_redeem_info" echo "ch ...
- Mybatis源码学习之DataSource(七)_2
接上节数据源,本节我们将继续学习未完成的部分,包括无连接池情况下的分析.为什么使用连接池.及mybatis连接池的具体管理原理 不使用连接池的UnpooledDataSource 当 的type属性为 ...
- CSS高级学习-1
优先级 权值 标签权值为1,类权值为10,ID权值最高为100. p{color:red;} /*权值为1*/ p span{color:green;} /*权值为1+1=2*/ .warning{c ...
- 预处理、const、static与sizeof-C++中const有什么作用(至少说出3个)
1:作用如下: (1)const用于定义常量:const定义的常量编译器可以对其进行数据静态类型安全检查. (2)const修饰函数形式的参数:当输入参数为用户自定义类型和抽象数据类型时,应该将“值传 ...
- C/C++程序基础-标准头文件的结构
1:标准头文件有如下结构,请解释. #ifndef _INCvxWorksh #define _INCvxWorksh#ifdef _cplusplus extern "C"{ # ...
- python 普通继承方式和super继承方式
Python中对象方法的定义很怪异,第一个参数一般都命名为self(相当于其它语言的this),用于传递对象本身,而在调用的时候则不必显式传递,系统会自动传递. 举一个很常见的例子: >> ...
- EBS 查看输出HTML报表问题总结
问题一: 请求输出格式为HTML(如下图,默认浏览器输出),希望 查看输出 的时候能够实现excel输出. 解决方法: 路径:系统管理员/安装/浏览器选项 注:维护如下记录 文件格式:HTML ...
- 记录学习Linux过程
第一步fdisk-l 出错 Permission denied? ubuntu@VM-0-6-ubuntu:~$ fdisk -l fdisk: cannot open /dev/vda: Permi ...
- EclipseADT编写单元测试代码的步骤
1. 写一个类 extends AndroidTestCase 2. 写一个测试方法 a.必须是public b.必须抛出异常给操作系统 public void textAdd()thr ...