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;
}

最新文章

  1. ubuntu安装navicat及常见问题解决
  2. 《深入.NET平台和C# 编程》内测纠错记录
  3. 利用Apache Ant编译Hadoop2.6.0-eclipse-plugin
  4. 【转】 Git 常用命令详解(二)----不错
  5. IOS学习之路十九(JSON与Arrays 或者 Dictionaries相互转换)
  6. vs2013 中已经添加了引用,编译还是提示没有添加引用
  7. ocs添加仓库受限问题
  8. linux查找指定目录文件大小
  9. JAVA:简单添加菜单界面(swing)
  10. JAVA核心技术I---JAVA基础知识
  11. hdoj2089(入门数位dp)
  12. python 历险记(一)— python 的String,集合(List,元组,Dict)
  13. java BitSet2
  14. [py][mx]django通过邮箱找回密码
  15. java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \&quot; \&#39; \\ )
  16. SQL时间格式化 转载备用~
  17. 如何修改macbook的MAC地址
  18. c++ list erase()
  19. lodop打印控件需要开启的几个计算机服务
  20. jquery 文本框回车与change事件

热门文章

  1. 从首个IMO季军谈起 作者 : 付云皓
  2. Genymotion下载及安装(安卓虚拟机)
  3. First Kernel-pwn
  4. Unknown CMake command &quot;check_symbol_exists&quot;.
  5. Wannafly Camp 2020 Day 1I K小数查询 - 分块
  6. asp.net core 发布到linux下Docker
  7. (转)classload和class.forname()区别
  8. Java基本语法--控制台输入(Scanner类)
  9. PyTorch对ResNet网络的实现解析
  10. Python之二:基础知识