bnuoj 1059 实力排行

    xiaoxiao2025-06-23  7

    解法:stringstream+map想复杂了,其实可以很简单(用sscanf就好)!

    #include<bits/stdc++.h> using namespace std; struct Team { double val; int dz; string dm; }; bool cmp(Team a,Team b) { if(a.val!=b.val) return a.val>b.val; else if(a.dz!=b.dz) return a.dz>b.dz; else return a.dm<b.dm; } int main() { int n; while(cin>>n,n) { getchar(); map<string,int>pq; Team que[105]; string str; int r,sum; for(int i=0;i<n;i++) { string buf; int k=0; getline(cin,str); stringstream ss(str); while(ss>>buf) k++; stringstream st(str); int j=1,pos,pos1=0,w=0,sum=0;//pos1要初始化 while(st>>buf) { int len=buf.size(); if(j==1) que[i].dm=buf; else if(j<=(k+1)/2) { if(buf[len-1]==')'&&buf[len-2]=='C') pos=j; if(buf[len-1]==')'&&buf[len-2]=='R') pos1=j; } else { r=0; for(int v=0;v<len;v++) r=r*10+(buf[v]-'0'); if(j==pos+k/2) que[i].dz=r; if(j!=pos1+k/2)//如果pos1不初始化就有问题 { sum+=r; w++; } } j++; } que[i].val=(1.0*sum)/w; } sort(que,que+n,cmp); for(int i=0;i<n;i++) pq[que[i].dm]=i+1; cout<<pq["Archimedes"]<<"\n"; } return 0; }

     

     

    转载请注明原文地址: https://ju.6miu.com/read-1300235.html
    最新回复(0)