1025 PAT Ranking (25分) (水)

在这里插入图片描述
在这里插入图片描述
比较基础的一道结构体,但是一直wa,仔细看看后才发现,自己漏了一个总人数的输出。。。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=30005;
struct stu
{
    int score;
    string  num;
    int group;
    int rank1;
    int rank2;
}q[maxn];
int cmp1(stu a,stu b)
{
    if(a.score==b.score)
    {
        return a.num<b.num;
    }
    return a.score>b.score;
}
int main()
{
    int n;
    scanf("%d",&n);
    int cnt=1;
    int g=1;
    int b,e;
    for(int i=1;i<=n;i++)
    {
        int k;
        scanf("%d",&k);
        b=cnt;
        for(int j=1;j<=k;j++)
        {
            string s;
            cin>>s;
            int sc;
            scanf("%d",&sc);
            q[cnt].score=sc;
            q[cnt].num=s;
            q[cnt].group=i;
            cnt++;
        }
        e=cnt-1;
//        printf("%d--%d\n",b,e);
        sort(q+b,q+e+1,cmp1);
        int r=2;
        q[b].rank1=1;
        for(int l=b+1;l<=e;l++)
        {
             if(q[l].score==q[l-1].score)
             {
                 q[l].rank1=q[l-1].rank1;
             }
             else q[l].rank1=r;
             r++;
        }
//        for(int p=b;p<=e;p++)
//        {
//            printf("%d--%d\n",q[p].rank1,q[p].score);
//        }
        g++;
    }
    printf("%d\n",cnt-1);
    sort(q+1,q+cnt,cmp1);
    int r=2;
    q[1].rank2=1;
    for(int i=2;i<cnt;i++)
    {
       if(q[i].score==q[i-1].score)
       {
           q[i].rank2=q[i-1].rank2;
       }
       else q[i].rank2=r;
       r++;
    }
    for(int i=1;i<cnt;i++)
    {
        cout<<q[i].num;
        printf(" %d %d %d\n",q[i].rank2,q[i].group,q[i].rank1);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值