1025. PAT Ranking (25)

it2024-12-02  21

距离PAT考试还有15天最重要的就是做透每一题

 

 (1)思路就是保存到一个结构体中然后排序

但是敲得速度还是有点慢

 

#include <cstdio> #include <vector> #include <cstring> #include <algorithm> using namespace std; struct record { char id[20]; int fin_rk; int lo_nu; int lo_rk; int sc; record(){ memset(id,'\0',sizeof(id)); sc=fin_rk=lo_nu=lo_rk=0; } }; bool cmp(record r1,record r2) { if(r1.sc == r2.sc) { if(strcmp(r1.id,r2.id) < 0) { return true; } } else if(r1.sc > r2.sc) return true; return false; } int main() { int n; scanf("%d",&n); vector<vector<record>> vr; for(int i=0;i<n;i++) { int k; scanf("%d",&k); vector<record> v; for(int j=0;j<k;j++) { record re; scanf("%s %d",&(re.id[0]),&(re.sc)); re.lo_nu=i+1; v.push_back(re); } vr.push_back(v); } vector<record> res; for(int i=0;i<vr.size();i++) { sort(vr[i].begin(),vr[i].end(),cmp); for(int j=0;j<vr[i].size();j++) { if(j == 0) vr[i][j].lo_rk=1; if(j != 0) { if(vr[i][j].sc==vr[i][j-1].sc) { vr[i][j].lo_rk=vr[i][j-1].lo_rk; } else { vr[i][j].lo_rk=j+1; } } } for(int j=0;j<vr[i].size();j++) { res.push_back(vr[i][j]); } } sort(res.begin(),res.end(),cmp); for(int j=0;j<res.size();j++) { if(j == 0) res[j].fin_rk=1; if(j != 0) { if(res[j].sc == res[j-1].sc) { res[j].fin_rk=res[j-1].fin_rk; } else { res[j].fin_rk=j+1; } } } printf("%d\n",res.size()); for(int j=0;j<res.size();j++) { printf("%s %d %d %d\n",res[j].id,res[j].fin_rk,res[j].lo_nu,res[j].lo_rk); } }

 

 

 

 

转载于:https://www.cnblogs.com/tclan126/p/8502994.html

相关资源:数据结构—成绩单生成器
最新回复(0)