1025 PAT Ranking (25分)
2024-10-01 08:42:45
1025 PAT Ranking (25分)
1. 题目
2. 思路
设置结构体, 先对每一个local排序,再整合后排序
3. 注意点
整体排序时注意如果分数相同的情况下还要按照编号排序
4. 代码
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
struct stu{
int location_number;
char registration_number[14];
int score;
int local_rank;
int final_rank;
};
int cmp(stu a, stu b){
if(a.score == b.score){
return strcmp(a.registration_number, b.registration_number)<0;
}
return a.score>b.score;
}
void show(stu s[], int size){
printf("----\n");
for(int i=0;i<size;i++){
printf("%s %d %d %d\n",
s[i].registration_number, s[i].score,
s[i].location_number, s[i].local_rank);
}
printf("----\n");
}
void _show(stu s[], int size){
for(int i=0;i<size;i++){
printf("%s %d %d %d\n",
s[i].registration_number, s[i].final_rank,
s[i].location_number, s[i].local_rank);
}
}
void showD1(int a[], int size){
printf("----\n");
for(int i=0;i<size;i++){
printf("%d ", a[i]);
}
printf("----\n");
}
void localRank(stu s[], int size){
sort(s, s+size, cmp);
int local_rank = 1;
s[0].local_rank = local_rank;
for(int i=1;i<size;i++){
if(s[i].score != s[i-1].score){
local_rank = i+1;
}
s[i].local_rank = local_rank;
}
}
void finalRank(stu s[], int size){
sort(s, s+size, cmp);
int final_rank = 1;
s[0].final_rank = final_rank;
for(int i=1;i<size;i++){
if(s[i].score != s[i-1].score){
final_rank = i+1;
}
s[i].final_rank = final_rank;
}
}
void stucat(stu s[], stu s1[], int start, int length){
for(int i=0;i<length;i++){
s[start+i] = s1[i];
}
}
int main(){
stu s[30000];
int N;
scanf("%d", &N);
int num = 0;
for(int i=0;i<N;i++){
int K;
scanf("%d", &K);
stu s1[K];
for(int j=0;j<K;j++){
scanf("%s %d", s1[j].registration_number, &s1[j].score);
s1[j].location_number = i+1;
}
localRank(s1, K);
stucat(s, s1, num, K);
num += K;
}
finalRank(s, num);
printf("%d\n", num);
_show(s, num);
return 0;
}
最新文章
- ubuntu安装navicat及常见问题解决
- 《深入.NET平台和C# 编程》内测纠错记录
- 利用Apache Ant编译Hadoop2.6.0-eclipse-plugin
- 【转】 Git 常用命令详解(二)----不错
- IOS学习之路十九(JSON与Arrays 或者 Dictionaries相互转换)
- vs2013 中已经添加了引用,编译还是提示没有添加引用
- ocs添加仓库受限问题
- linux查找指定目录文件大小
- JAVA:简单添加菜单界面(swing)
- JAVA核心技术I---JAVA基础知识
- hdoj2089(入门数位dp)
- python 历险记(一)— python 的String,集合(List,元组,Dict)
- java BitSet2
- [py][mx]django通过邮箱找回密码
- java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \"; \&#39; \\ )
- SQL时间格式化 转载备用~
- 如何修改macbook的MAC地址
- c++ list erase()
- lodop打印控件需要开启的几个计算机服务
- jquery 文本框回车与change事件
热门文章
- 从首个IMO季军谈起 作者 : 付云皓
- Genymotion下载及安装(安卓虚拟机)
- First Kernel-pwn
- Unknown CMake command ";check_symbol_exists";.
- Wannafly Camp 2020 Day 1I K小数查询 - 分块
- asp.net core 发布到linux下Docker
- (转)classload和class.forname()区别
- Java基本语法--控制台输入(Scanner类)
- PyTorch对ResNet网络的实现解析
- Python之二:基础知识