zoukankan      html  css  js  c++  java
  • PAT Ranking (排名)

    PAT Ranking (排名)

    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.

     Input Specification:

    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.

     Output Specification:

    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.

    Sample Input:

    2

    5

    1234567890001 95

    1234567890005 100

    1234567890003 95

    1234567890002 77

    1234567890004 85

    4

    1234567890013 65

    1234567890011 25

    1234567890014 100

    1234567890012 85

     Sample Output:

    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

    先分组排名,再全部排名

      1 #include <iostream>
      2 
      3 #include <string>
      4 
      5 #include <algorithm>
      6 
      7 #include <vector>
      8 
      9 using namespace std;
     10 
     11  
     12 
     13 struct stu
     14 
     15 {
     16 
     17    int loc,frank,lrank,gra;
     18 
     19    string name;
     20 
     21 };
     22 
     23  
     24 
     25  
     26 
     27 bool cmp(stu s1,stu s2)
     28 
     29 {
     30 
     31     if(s1.frank==s2.frank)
     32 
     33     return s1.name<s2.name;
     34 
     35  
     36 
     37       return s1.frank<s2.frank;
     38 
     39 }
     40 
     41  
     42 
     43 bool cmpg(stu s1,stu s2)
     44 
     45 {
     46 
     47  
     48 
     49       return s1.gra>s2.gra;
     50 
     51 }
     52 
     53  
     54 
     55 int main()
     56 
     57 {
     58 
     59  
     60 
     61   int n;int k;int rank,count;
     62 
     63   int i,j;
     64 
     65     while(cin>>n)
     66 
     67   {
     68 
     69       vector<stu> total;
     70 
     71      for(i=1;i<=n;i++)
     72 
     73      {
     74 
     75          cin>>k;
     76 
     77             vector<stu> s(k);
     78 
     79         for(j=0;j<k;j++)
     80 
     81             {
     82 
     83                cin>>s[j].name>>s[j].gra;
     84 
     85                s[j].loc=i;
     86 
     87             }
     88 
     89             sort(s.begin(),s.end(),cmpg);
     90 
     91             count=1;
     92 
     93             s[0].lrank=1;
     94 
     95             total.push_back(s[0]);
     96 
     97             for(j=0;j<k-1;j++)
     98 
     99             {
    100 
    101                   if(s[j].gra==s[j+1].gra)
    102 
    103                   {
    104 
    105                         s[j+1].lrank=s[j].lrank;
    106 
    107                         count++;
    108 
    109                   }
    110 
    111                   else
    112 
    113                   {
    114 
    115                       s[j+1].lrank=s[j].lrank+count;
    116 
    117                         count=1;
    118 
    119                   }
    120 
    121                   total.push_back(s[j+1]);
    122 
    123             }
    124 
    125      }
    126 
    127  
    128 
    129           sort(total.begin(),total.end(),cmpg);
    130 
    131           count=1;
    132 
    133             total[0].frank=1;
    134 
    135             for(j=0;j<total.size()-1;j++)
    136 
    137             {
    138 
    139                   if(total[j].gra==total[j+1].gra)
    140 
    141                   {
    142 
    143                         total[j+1].frank=total[j].frank;
    144 
    145                         count++;
    146 
    147                   }
    148 
    149                   else
    150 
    151                   {
    152 
    153                       total[j+1].frank=total[j].frank+count;
    154 
    155                         count=1;
    156 
    157                   }
    158 
    159             }
    160 
    161  
    162 
    163             sort(total.begin(),total.end(),cmp);
    164 
    165             cout<<total.size()<<endl;
    166 
    167             for(i=0;i<total.size();i++)
    168 
    169                   cout<<total[i].name<<" "<<total[i].frank<<" "<<total[i].loc<<" "<<total[i].lrank<<endl;
    170 
    171    
    172 
    173   }
    174 
    175   return 0;
    176 
    177 }
    178 
    179  
    View Code
  • 相关阅读:
    创业失败,是应该坚持还是给别人打工?
    在三四线小城市投资3至8万,做什么小生意好?
    在小县城做什么生意好?
    在农村创业有哪些优势和机会?
    听说做餐饮的都在赔钱,为什么新店却越开越多?
    现在做什么行业好一点?
    手头有五万左右,想做个小生意,有什么值得推荐的?
    可以给我个创业的建议吗?
    如果你现在月工资纯入7千左右,30多岁有家庭但前途迷茫,你会独自创业打拼吗?
    JeeSite 4.0 简化业务逻辑层开发
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4240614.html
Copyright © 2011-2022 走看看