7-15 PAT排名汇总 (25分)

7-15 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<stdio.h>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include <stdlib.h>
#include <string.h>
struct node
{
    char a[14];
    int data;
    int kd;
    int pm1;
    int pm;
} s[30005];
int cmp(struct node a,struct node b)
{
    if(a.data!=b.data)
        return a.data>b.data;
    else
        return strcmp(a.a,b.a)<0;
}
using namespace std;
int main()
{
    int n,m,i,j;
    scanf("%d",&n);
    int w=0;
    for(i=0; i<n; i++)
    {
        scanf("%d",&m);
        for(j=w; j<m+w; j++)
        {
            getchar();
            scanf("%s %d",s[j].a,&s[j].data);
            s[j].kd=i+1;
        }
        sort(s+w,s+m+w,cmp);
        int l=1;
        s[w].pm1=l;
        for(j=w+1; j<m+w; j++)
        {
            if(s[j].data==s[j-1].data)
            {l++;
                s[j].pm1=s[j-1].pm1;

            }
            else
            { l++;
                s[j].pm1=l;

            }
        }
        w+=m;
    }
    sort(s,s+w,cmp);
    int l;
    l=1;
    s[0].pm=1;
    for(j=1; j<w; j++)
    {
        if(s[j].data==s[j-1].data)
        { l++;
            s[j].pm=s[j-1].pm;


        }
        else
        {l++;
            s[j].pm=l;

        }
    }
    printf("%d\n",w);
    for(i=0;i<w;i++)
    {
        printf("%s %d %d %d\n",s[i].a,s[i].pm,s[i].kd,s[i].pm1);
    }
}

时间没有掌握好,比赛晚到了一小时,这个题也是比赛结束后一分钟做出来的,果然生活失误一点就会有惩罚,白白25分没了,比赛马上结束时已经能够数出了,但是没有输出w,啊啊啊啊啊,挺难受的,差一步,这样就是零分。。。。哎,在加油吧

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

直接AC好吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值