zoukankan      html  css  js  c++  java
  • 【PAT甲级】1025 PAT Ranking (25 分)(结构体排序,MAP<string,int>映射)

    题意:

    输入一个正整数N(N<=100),表示接下来有N组数据。每组数据先输入一个正整数M(M<=300),表示有300名考生,接下来M行每行输入一个考生的ID和分数,ID由13位整数组成。求输出所有考生的数量并且按照考生在全体中的成绩排名以及ID的字典序输出ID和名词,并标注考生所在的考场编号以及他在考场中的排名。

    AAAAAccepted code:

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 map<string,int>mp;
     5 typedef struct anss{
     6     string s;
     7     int final_rank;
     8     int local_num;
     9     int local_rank;
    10 };
    11 anss ans[30007];
    12 typedef struct testee{
    13     string num;
    14     int score;
    15 };
    16 testee t[107][307];
    17 testee a[30007];
    18 bool cmp(testee a,testee b){
    19     return a.score>b.score;
    20 }
    21 bool cmp1(anss a,anss b){
    22     if(a.final_rank!=b.final_rank)
    23         return a.final_rank<b.final_rank;
    24     return a.s<b.s;
    25 }
    26 int cnt[107];
    27 int main(){
    28     int n;
    29     cin>>n;
    30     int tt=0;
    31     int tot=0;
    32     for(int i=1;i<=n;++i){
    33         int m;
    34         cin>>m;
    35         cnt[i]=m;
    36         for(int j=1;j<=m;++j){
    37             string s;
    38             int x;
    39             cin>>s>>x;
    40             t[i][j].num=s;
    41             t[i][j].score=x;
    42             a[++tot].num=s;
    43             a[tot].score=x;
    44             mp[s]=++tt;
    45             ans[tt].s=s;
    46             ans[tt].local_num=i;
    47         }
    48     }
    49     for(int i=1;i<=n;++i){
    50         sort(t[i]+1,t[i]+1+cnt[i],cmp);
    51         int no=0;
    52         int tmp=1;
    53         ans[mp[t[i][1].num]].local_rank=++no;
    54         for(int j=2;j<=cnt[i];++j)
    55             if(t[i][j].score!=t[i][j-1].score){
    56                 ans[mp[t[i][j].num]].local_rank=++no;
    57                 tmp=no;
    58             }
    59             else{
    60                 ans[mp[t[i][j].num]].local_rank=tmp;
    61                 ++no;
    62             }
    63     }
    64     int sum=0;
    65     for(int i=1;i<=n;++i)
    66         sum+=cnt[i];
    67     sort(a+1,a+1+sum,cmp);
    68     int no=0;
    69     int tmp=1;
    70     ans[mp[a[1].num]].final_rank=++no;
    71     for(int i=2;i<=sum;++i)
    72         if(a[i].score!=a[i-1].score){
    73             ans[mp[a[i].num]].final_rank=++no;
    74             tmp=no;
    75         }
    76         else{
    77             ans[mp[a[i].num]].final_rank=tmp;
    78             ++no;
    79         }
    80     sort(ans+1,ans+1+sum,cmp1);
    81     cout<<sum<<"
    ";
    82     for(int i=1;i<=sum;++i)
    83         cout<<ans[i].s<<" "<<ans[i].final_rank<<" "<<ans[i].local_num<<" "<<ans[i].local_rank<<"
    ";
    84     return 0;
    85 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    转载:C#中的属性、和字段的区别
    在idea中创建一个maven web工程及解决工程创建过慢问题
    注解&动态代理
    Listener&Filter
    Ajax&jQuery
    JSP&EL&JSTL
    Cookie&Session
    HttpServletRequest&HttpServletResponse
    Http协议&Servlet
    XML
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11453192.html
Copyright © 2011-2022 走看看