zoukankan      html  css  js  c++  java
  • PAT 甲级1025 PAT Ranking的

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>//这是sort函数所在的库
     4 using namespace std;
     5 struct Student{
     6     char id[15];          //id
     7     int score;            //分数 
     8     int location_number;//考场号 
     9     int location_rank;  //考场排名 
    10 }stu[30010];
    11 
    12 bool cmp(Student student1,Student student2){
    13     if(student1.score!=student2.score){
    14         return student1.score>student2.score; 
    15     }else{
    16         return strcmp(student1.id,student2.id)<0;
    17     }
    18 }
    19 
    20 int main(){
    21     int n;      //考场的数量 
    22     int num;    //某个考场考生的人数
    23     int k=0;     //考生总人数 
    24     scanf("%d",&n);                //输入考场数量 
    25     for(int i=0;i<n;i++){         
    26         scanf("%d",&num);        //输入该考场的人数
    27         for(int j=0;j<num;j++){
    28             scanf("%s %d",stu[k].id,&stu[k].score);      //输入考生的ID和分数 
    29             stu[k].location_number = i+1;              //获取考生的考场 
    30             k++;
    31         }
    32         sort(stu+k-num,stu+k,cmp); //sort函数排序
    33         stu[k-num].location_rank = 1;
    34         for(int j=1;j<num;j++){
    35             if(stu[k+j-num].score==stu[k+j-num-1].score){
    36                 stu[k+j-num].location_rank = stu[k+j-num-1].location_rank;//同分和上一个同学同排名 
    37             }else{
    38                 stu[k+j-num].location_rank = j+1; //不同分就是当前循环的单位加1 
    39             }
    40         } 
    41     }
    42     sort(stu,stu+k,cmp);
    43     printf("%d",k);//输出考生总人数 
    44     int rank=1;    //当前排名    
    45     printf("%s %d %d %d
    ",stu[0].id,rank,stu[0].location_number,stu[0].location_rank);//只有一条数据时候输出一条 
    46     for(int i=1;i<k;i++){
    47         printf("%s ",stu[i].id);
    48         if(stu[i].score==stu[i-1].score){
    49             printf("%d %d %d
    ",rank,stu[i].location_number,stu[i].location_rank);    
    50         }else{
    51             printf("%d %d %d
    ",i+1,stu[i].location_number,stu[i].location_rank);
    52             rank=i+1;
    53         }          
    54     }    
    55 } 
  • 相关阅读:
    MYSQL数据库实验(存储过程与触发器)
    Markdown
    EXT文件系统
    Arch在VirtualBox虚拟机中挂载U盘
    U盘启动没有引导项
    安装ArchLinux的两篇博文
    Arch Linux上安装Win10
    Gentoo系统安装痕迹化记录
    物联网操作系统安全研究综述
    2013.06_多线程_多核多线程技术综述_眭俊华
  • 原文地址:https://www.cnblogs.com/Jason-LinkStart/p/12919368.html
Copyright © 2011-2022 走看看