• PTA PAT排名汇总(25 分)


    PAT排名汇总(25 分)

    计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才,为企业选拔人才提供参考标准(网址http://www.patest.cn)。

    每次考试会在若干个不同的考点同时举行,每个考点用局域网,产生本考点的成绩。考试结束后,各个考点的成绩将即刻汇总成一张总的排名表。

    现在就请你写一个程序自动归并各个考点的成绩并生成总排名表。

    输入格式:

    输入的第一行给出一个正整数N(≤100),代表考点总数。随后给出N个考点的成绩,格式为:首先一行给出正整数K(≤300),代表该考点的考生总数;随后K行,每行给出1个考生的信息,包括考号(由13位整数字组成)和得分(为[0,100]区间内的整数),中间用空格分隔。

    输出格式:

    首先在第一行里输出考生总数。随后输出汇总的排名表,每个考生的信息占一行,顺序为:考号、最终排名、考点编号、在该考点的排名。其中考点按输入给出的顺序从1到N编号。考生的输出须按最终排名的非递减顺序输出,获得相同分数的考生应有相同名次,并按考号的递增顺序输出。

    输入样例:

    2
    5
    1234567890001 95
    1234567890005 100
    1234567890003 95
    1234567890002 77
    1234567890004 85
    4
    1234567890013 65
    1234567890011 25
    1234567890014 100
    1234567890012 85
    

    输出样例:

    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
    #include <iostream>
    #include <cstring>
    #include <string>
    #include <algorithm>
    #include <queue>
    using namespace std;
    struct node
    {
       string s;
       int fs;
       int bh;//bian h
       int dp;
       friend bool operator <(node x,node y) 
        {
           if(x.fs==y.fs)  
               return x.s > y.s;
           else return x.fs<y.fs;
        }
    }a[305];
    bool cmp(node x,node y)
    {
        return x.fs>y.fs;
    }
    priority_queue<node>q;
    int main()
    {
        int n;
        cin>>n;
        int i,j;
        for(i=1;i<=n;i++)
        {
            int k;
            cin>>k;
            for(j=1;j<=k;j++)
            {
                cin>>a[j].s>>a[j].fs;
                a[j].bh=i;
            }
            sort(a+1,a+1+k,cmp);
            int mm=-1;
            int o=1;
            for(j=1;j<=k;j++)
            {
                if(mm!=-1&&mm==a[j].fs)
                {
                    a[j].dp=o-1;
                    o++;
                }
                else
                {
                    a[j].dp=o;
                    o++;
                }
                mm=a[j].fs;
                q.push (a[j]);
            }
        }
        int o=1;
        int mm=-1;
        while(!q.empty ())
        {
            node x=q.top();q.pop();;
            if(mm!=-1&&mm==x.fs)
            {
                cout<<x.s<<" "<<o-1<<" "<<x.bh<<" "<<x.dp;
                o++;
            }
            else
            {
               cout<<x.s<<" "<<o++<<" "<<x.bh<<" "<<x.dp;
            }
            mm=x.fs;
            if(!q.empty ()) cout<<endl;
        }
        return 0;
    }
        
    
        


  • 相关阅读:
    IT知识构架与操作系统简介
    read与for循环语句
    shell基础练习题
    shell 100以内加法
    shell
    python学习第一日
    shell脚本基本介绍
    bash的基本特性
    Linux习题
    Linux基本命令
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/8544394.html
Copyright © 2020-2023  润新知