标签:

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