• 排名


    Problem Description
    今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑 
    每题的分值,所以并不是最后的排名。给定录取分数线,请你写程序找出最后通过分数线的 
    考生,并将他们的成绩按降序打印。 
     
    Input
    测试输入包含若干场考试的信息。每场考试信息的第1行给出考生人数N ( 0 < N 
    < 1000 )、考题数M ( 0 < M < = 10 )、分数线(正整数)G;第2行排序给出第1题至第M题的正整数分值;以下N行,每行给出一 
    名考生的准考证号(长度不超过20的字符串)、该生解决的题目总数m、以及这m道题的题号 
    (题目号由1到M)。 
    当读入的考生人数为0时,输入结束,该场考试不予处理。 
     
    Output
    对每场考试,首先在第1行输出不低于分数线的考生人数n,随后n行按分数从高 
    到低输出上线考生的考号与分数,其间用1空格分隔。若有多名考生分数相同,则按他们考 
    号的升序输出。 
     
    Sample Input
    4 5 25
    10 10 12 13 15
    CS004 3 5 1 3
    CS003 5 2 4 1 3 5
    CS002 2 1 2
    CS001 3 2 3 5
    1 2 40
    10 30
    CS001 1 2
    2 3 20
    10 10 10
    CS000000000000000001 0
    CS000000000000000002 2 1 2
    0
     
    Sample Output
    3
    CS003 60
    CS001 37
    CS004 37
    0
    1
    CS000000000000000002 20
     
     
     1 #include <stdio.h> 
     2 #include <string.h>
     3 
     4 int main(){
     5     int N;
     6     int M;
     7     int G;
     8     int score[11];
     9     int i;
    10     int j;
    11     char name[1001][21];
    12     char nameTemp[21];
    13     int save[1001];
    14     int m;
    15     int temp;
    16     int position; 
    17     int amount;
    18     
    19     while(1){
    20         scanf("%d",&N);
    21         
    22         if(N==0)
    23             break;
    24         
    25         scanf("%d%d",&M,&G);
    26         
    27         //printf("%d %d %d
    ",N,M,G);
    28         
    29         amount=0;    
    30         for(i=0;i<M;i++)
    31             scanf("%d",&score[i]);
    32             
    33         /*for(i=0;i<M;i++)
    34             printf("%d ",score[i]);
    35         printf("
    ");*/
    36             
    37         for(i=0;i<N;i++){
    38             scanf("%s%d",name[i],&m);
    39             temp=0;
    40             for(j=0;j<m;j++){
    41                 scanf("%d",&position);
    42                 temp+=score[position-1];
    43             }
    44             
    45             save[i]=temp;
    46             
    47             if(temp>=G)
    48                 amount++;
    49         }
    50         
    51         printf("%d
    ",amount);
    52         
    53         for(i=0;i<N-1;i++){
    54             for(j=i+1;j<N;j++){
    55                 if(save[i]<save[j]){
    56                     temp=save[i];
    57                     save[i]=save[j];
    58                     save[j]=temp;
    59                     
    60                     strcpy(nameTemp,name[i]);
    61                     strcpy(name[i],name[j]);
    62                     strcpy(name[j],nameTemp);    
    63                 }
    64                 
    65                 if(save[i]==save[j]){
    66                     if(strcmp(name[i],name[j])>0){
    67                         temp=save[i];            
    68                         save[i]=save[j];         
    69                         save[j]=temp;                                                                                         
    70                                                                                                        
    71                           strcpy(nameTemp,name[i]);
    72                            strcpy(name[i],name[j]); 
    73                         strcpy(name[j],nameTemp);
    74                     }
    75                 }
    76             }
    77         }
    78         
    79         for(i=0;i<N;i++){
    80             if(save[i]>=G)
    81                 printf("%s %d
    ",name[i],save[i]);
    82         }
    83     }                             
    84                               
    85 
    86     return 0;
    87 } 
  • 相关阅读:
    在线工具把C#代码转换成VB.NET代码
    document.execCommand()函数可用参数(整理收集)
    终于搞定sp_executesql的调用
    IIS 未被授权查看该页
    ajax学习笔记(1)
    Wscript.Shell 对象详细介绍!!特好的东西
    ASP.NET AJAX 客户端生命周期事件
    本人扩展的可绑定Dataset的Treeview,遇到不能展开的问题
    固定表头简单实现
    C#实现屏幕录像
  • 原文地址:https://www.cnblogs.com/zqxLonely/p/4093022.html
Copyright © 2020-2023  润新知