标签:
8 20 Smith -1 -16 8 0 0 120 39 0 John 116 -2 11 0 0 82 55(1) 0 Josephus 72(3) 126 10 -3 0 47 21(2) -2 Bush 0 -1 -8 0 0 0 0 0 Alice -2 67(2) 13 -1 0 133 79(1) -1 Bob 0 0 57(5) 0 0 168 -7 0
Josephus 5 376 John 4 284 Alice 4 352 Smith 3 167 Bob 2 325 Bush 0 0
#include<iostream> #include<string> #include<string.h> #include<stdio.h> #include<iomanip> #include<algorithm> using namespace std; struct person { string name; string a[12];//最多12个科目的分数 int sum; int count;//做出的题数 }; int cmp(person a,person b) { if(a.count!=b.count) return a.count>b.count;//降序 if(a.count==b.count &&a.sum!=b.sum) return a.sum<b.sum; if(a.count==b.count &&a.sum==b.sum) return a.name<b.name; } int main() { int n,m,j,k,g,time,login;//n考试题数 m单位罚分数 char c[100]; person b[1000]; cin>>n>>m; int i=0; while(cin>>b[i].name) { //cout<<b[i].name<<endl; if(b[i].name=="eof") break; for(j=0;j<n;j++) cin>>b[i].a[j]; i++; } for(k=0;k<i;k++) { b[k].count=0; b[k].sum=0; for(j=0;j<n;j++) { if(b[k].a[j][0]=='-')//如果此题标记负数的话,没做出来,不扣时间 continue; else { int len=b[k].a[j].size(); //67(267) if(len==1 && b[k].a[j][0]=='0') //0 { continue; } b[k].count++; login=b[k].a[j].find("("); if(login==-1) { sscanf(b[k].a[j].c_str(),"%d",&time); b[k].sum=b[k].sum+time; } else { int l=0; b[k].a[j][login]='\0'; sscanf(b[k].a[j].c_str(),"%d",&time); b[k].sum=b[k].sum+time; for(g=login+1;g<len-1;g++) c[l++]=b[k].a[j][g]; c[l]='\0'; sscanf(c,"%d",&time); b[k].sum=b[k].sum+time*m; } } } } sort(b,b+i,cmp); for(j=0;j<i;j++) { cout<<left<<setw(10)<<b[j].name<<' '<<right<<setw(2)<<b[j].count<<' '<<setw(4)<<b[j].sum<<endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/43866811