1025 PAT Ranking (25分)

这题还算简单的。也一次提交就过了。只是用时和内存比不上柳神的代码...不知道为什么。可能string和cin,cout比较耗时吧...
1 #include <iostream> 2 #include<cstdio> 3 #include<string> 4 #include<vector> 5 #include<algorithm> 6 using namespace std; 7 struct node{ 8 string id; 9 int score,location,L_rank,F_rank; 10 node(){ 11 score=location=0; 12 L_rank=F_rank=1; 13 } 14 }; 15 bool cmp(node x,node y){ 16 if(x.score!=y.score) 17 return x.score>y.score;//分数高的在前面 18 else 19 return x.id<y.id;//id小的在前面 20 } 21 int main() 22 { 23 int N,K; 24 cin>>N; 25 string id; 26 int score,sum=0; 27 node x; 28 vector<node> res; 29 for(int i=1;i<=N;i++){ 30 cin>>K; 31 sum+=K; 32 x.location=i; 33 vector<node> Q; 34 for(int j=0;j<K;j++){ 35 cin>>x.id>>x.score; 36 Q.push_back(x); 37 } 38 sort(Q.begin(),Q.end(),cmp); 39 res.push_back(Q[0]); 40 for(int i=1;i<Q.size();i++){ 41 if(Q[i].score==Q[i-1].score) 42 Q[i].L_rank=Q[i-1].L_rank; 43 else 44 Q[i].L_rank=i+1; 45 res.push_back(Q[i]); 46 } 47 48 49 } 50 sort(res.begin(),res.end(),cmp); 51 for(int i=1;i<res.size();i++){ 52 if(res[i].score==res[i-1].score) 53 res[i].F_rank=res[i-1].F_rank; 54 else 55 res[i].F_rank=i+1; 56 } 57 cout<<sum<<endl; 58 for(int i=0;i<res.size();i++){ 59 cout<<res[i].id<<" "<<res[i].F_rank<<" "<<res[i].location<<" "<<res[i].L_rank<<endl; 60 61 } 62 return 0; 63 }

浙公网安备 33010602011771号