1025 PAT Ranking (25分)(水)

it2025-01-14  4

比较基础的一道结构体,但是一直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); } }
最新回复(0)