完全按照题目描述写出来就行了,看着可能有些麻烦,其实还好,就是注意一下比较函数和输出格式。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct student{
char name[11];
int ac;
int time;
}st[100000];
int cmp(student a, student b)
{
if(a.ac!=b.ac) return a.ac>b.ac;
if(a.time!=b.time) return a.time<b.time;
return strcmp(a.name,b.name)<0?1:0;
}
int main()
{
int n,m;
cin>>n>>m;
int p=0;
while(cin>>st[p].name)
{
st[p].ac=0;
st[p].time=0;
// char submit[10];
for(int i=0;i<n;i++)
{
char submit[10];
cin>>submit;
if(submit[0]!='-'&&submit[0]!='0')
{
st[p].ac++;
int l=strlen(submit);
if(submit[l-1]==')')
{
int j=l-2;
int tmp=1;
while(submit[j]!='(')
{
st[p].time+=(submit[j]-'0')*tmp*m;
tmp*=10;
j--;
}
j--;
tmp=1;
while(j>=0)
{
st[p].time+=(submit[j]-'0')*tmp;
tmp*=10;
j--;
}
}
else
{
// cout<<i<<"i"<<endl;
int tmp=1;
while(l--)
{
st[p].time+=(submit[l]-'0')*tmp;
tmp*=10;
// cout<<submit[l];
}
// cout<<"time"<<st[i].time<<endl;
}
}
}
p++;
}
sort(st,st+p,cmp);
for(int i=0;i<p;i++)
{
printf("%-10s %2d %4d\n",st[i].name,st[i].ac,st[i].time);
}
}